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多用户计数器代码
Mar 11 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
Jul 14 PHP
3个PHP多维数组转为一维数组的方法实例
Mar 13 PHP
非常好用的Zend Framework分页类
Jun 25 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
Nov 18 PHP
PHP实现可自定义样式的分页类
Mar 29 PHP
Yii框架组件和事件行为管理详解
May 20 PHP
php自定义函数实现JS的escape的方法示例
Jul 07 PHP
PHP实现导出excel数据的类库用法示例
Oct 15 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
Mar 14 PHP
php 静态属性和静态方法区别详解
Apr 09 PHP
PHP标准库 (SPL)――Countable用法示例
Jun 05 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
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
【消息提示组件】,兼容IE6/7&amp;&amp;FF2
2007/09/04 Javascript
jquery 新浪网易的评论块制作
2010/07/01 Javascript
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
JS实现两个大数(整数)相乘
2014/04/28 Javascript
jQuery调取jSon数据并展示的方法
2015/01/29 Javascript
AngularJS通过$location获取及改变当前页面的URL
2016/09/23 Javascript
vue.js实现条件渲染的实例代码
2017/06/22 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
node中Express 动态设置端口的方法
2017/08/04 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
bootstrap table支持高度百分比的实例代码
2018/02/28 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
vue权限路由实现的方法示例总结
2018/07/29 Javascript
js 实现ajax发送步骤过程详解
2019/07/25 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
关于Js中new操作符的作用详解
2021/02/21 Javascript
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
python 按不同维度求和,最值,均值的实例
2018/06/28 Python
Python如何筛选序列中的元素的方法实现
2019/07/15 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
Django中间件拦截未登录url实例详解
2019/09/03 Python
基于python traceback实现异常的获取与处理
2019/12/13 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
Python根据指定文件生成XML的方法
2020/06/29 Python
Python如何获取文件路径/目录
2020/09/22 Python
英国独特礼物想法和个性化礼物网站:notonthehighstreet.com
2018/04/16 全球购物
PHP如何删除一个Cookie值
2012/11/15 面试题
工作失误检讨书
2015/01/26 职场文书
教师研修随笔感言
2015/11/18 职场文书
党员反邪教心得体会
2016/01/15 职场文书
实习报告范文
2019/07/30 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
如何用Laravel包含你自己的帮助函数
2021/05/27 PHP