PHP脚本自动识别验证码查询汽车违章


Posted in PHP onDecember 20, 2016

经常有查下自己的车有没有违章,所以写了现在这个脚本,帮助查询自己的车是否违章。

主要用到,带cookie模拟表单提交和验证码识别。

Tesseract-OCR

验证码识别技术,Tesseract-OCR:https://github.com/tesseract-ocr/tesseract

安装教程:https://github.com/tesseract-ocr/tesseract

Tesseract-Ocr-For-PHP

把需要执行的命令,封装了一下

https://github.com/thiagoalessio/tesseract-ocr-for-php

直接上脚本,没进行什么优化,简单了解下:

PHP

<?php
require 'TesseractOCR.php';
function weizhang($car_code, $fdjh)
{
  $shanghui = mb_substr($car_code, 0, 1, 'utf-8');
  $pre = array(
    '冀' => 'he',
    '云' => 'yn'
  );
  $url_pre = $pre[$shanghui];
  $headers = array(
    'Host: '.$url_pre.'.122.gov.cn',
    'Origin: http://'.$url_pre.'.122.gov.cn',
    'Referer: http://'.$url_pre.'.122.gov.cn/views/inquiry.html?q=j',
    'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36 QQBrowser/4.1.4132.400'
  );
  //初始化变量
  $cookie_file = 'cookie.txt';
  $login_url = "http://$url_pre.122.gov.cn/views/inquiry.html?q=j";
  $post_url = "http://$url_pre.122.gov.cn/m/publicquery/vio";
  $verify_code_url = "http://$url_pre.122.gov.cn/captcha?nocache=".time();
  $curl = curl_init();
  $timeout = 5;
  curl_setopt($curl, CURLOPT_URL, $login_url);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);
  curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_file); //获取COOKIE并存储
  $contents = curl_exec($curl);
  curl_close($curl);
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, $verify_code_url);
  curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
  curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  $img = curl_exec($curl);
  curl_close($curl);
  $fp = fopen("verifyCode.jpg", "w");
  fwrite($fp, $img);
  fclose($fp);
  $code = (new TesseractOCR('verifyCode.jpg'))->psm(7)->run();
 $code = explode("\n", $code);
 $code = $code[1];
  echo $code.PHP_EOL;
  if (strlen($code) != 4) {
    return json_encode(array('code'=>500));
  }
  $data = array(
    'hpzl'=>'02',
    'hphm1b' => substr($car_code, -6),
    'hphm' => $car_code,
    'fdjh' => $fdjh,
    'captcha' => $code,
    'qm' => 'wf',
    'page' => 1
  );
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, $post_url);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
  $result = curl_exec($curl);
  curl_close($curl);
  //unlink($cookie_file);
  //unlink('verifyCode.jpg');
  return $result;
}
$count = 0;
// 车牌号
$car_code = '冀Dxxxxx';
// 发动机后6位
$fdjh = 'xxxxxx';
while (true) {
  $count++;
  if ($count>50) {
    exit('查询失败');
  }
  $res = weizhang($car_code, $fdjh);
  $info = json_decode($res, true);
  echo $res.PHP_EOL;
  if ($info['code'] == 200) {
    echo '车牌号: '. $car_code.PHP_EOL;
    echo '未处理违章数: '.$info['data']['content']['zs'];
    exit();
  }
}

执行效果

PHP脚本自动识别验证码查询汽车违章

以上所述是小编给大家介绍的PHP脚本自动识别验证码查询汽车违章,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
强烈推荐:php.ini中文版(2)
Oct 09 PHP
php disk_free_space 返回目录可用空间
May 10 PHP
PHP中用正则表达式清除字符串的空白
Jan 17 PHP
pdo中使用参数化查询sql
Aug 11 PHP
探讨Hessian在PHP中的使用分析
Jun 13 PHP
生成随机字符串和验证码的类的PHP实例
Dec 24 PHP
php中字符串和正则表达式详解
Oct 23 PHP
php多次include后导致全局变量global失效的解决方法
Feb 28 PHP
MySql数据库查询结果用表格输出PHP代码示例
Mar 20 PHP
ThinkPHP表单令牌错误的相关解决方法分析
May 20 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
May 30 PHP
php实例化对象的实例方法
Nov 17 PHP
php获取POST数据的三种方法实例详解
Dec 20 #PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
Dec 19 #PHP
Discuz论坛密码与密保加密规则
Dec 19 #PHP
yii框架搜索分页modle写法
Dec 19 #PHP
YII框架中搜索分页jQuery写法详解
Dec 19 #PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 #PHP
利用PHP抓取百度阅读的方法示例
Dec 18 #PHP
You might like
全国FM电台频率大全 - 15 山东省
2020/03/11 无线电
PHP url 加密解密函数代码
2011/08/26 PHP
php之Memcache学习笔记
2013/06/17 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
2015/05/12 PHP
yii2中使用Active Record模式的方法
2016/01/09 PHP
PHP如何实现订单的延时处理详解
2017/12/30 PHP
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
javascript 贪吃蛇实现代码
2008/11/22 Javascript
javascript EXCEL 操作类代码
2009/07/30 Javascript
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
推荐20家国外的脚本下载网站
2011/04/28 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
2016/08/03 Javascript
基于jquery二维码生成插件qrcode
2017/01/07 Javascript
jQuery中的一些小技巧
2017/01/18 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
[58:57]2018DOTA2亚洲邀请赛3月29日小组赛B组 Effect VS VGJ.T
2018/03/30 DOTA
python抽象基类用法实例分析
2015/06/04 Python
详解Python中的Descriptor描述符类
2016/06/14 Python
python实现输入数字的连续加减方法
2018/06/22 Python
Python实现模拟登录网易邮箱的方法示例
2018/07/05 Python
python处理“
2019/06/10 Python
Flask配置Cors跨域的实现
2019/07/12 Python
Jupyter加载文件的实现方法
2020/04/14 Python
Python APScheduler执行使用方法详解
2020/12/10 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
巴西葡萄酒商店:Divvino
2020/02/22 全球购物
公务员平时考核实施方案
2014/03/11 职场文书
英文推荐信格式范文
2014/05/09 职场文书
大学军训决心书
2015/02/05 职场文书
消费者理赔投诉书
2015/07/02 职场文书
vscode内网访问服务器的方法
2022/06/28 Servers