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 相关文章推荐
文件上传程序的全部源码
Oct 09 PHP
php 不同编码下的字符串长度区分
Sep 26 PHP
关于页面优化和伪静态
Oct 11 PHP
PHP的变量总结 新手推荐
Apr 18 PHP
批量去除PHP文件中bom的PHP代码
Mar 13 PHP
PHP中获取时间的下一周下个月的方法
Mar 18 PHP
PHP中substr()与explode()函数用法分析
Nov 24 PHP
php实现的SESSION类
Dec 02 PHP
Zend Framework连接Mysql数据库实例分析
Mar 19 PHP
php的api数据接口书写实例(推荐)
Sep 22 PHP
在laravel中实现事务回滚的方法
Oct 10 PHP
php的无刷新操作实现方法分析
Feb 28 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
PHP的FTP学习(四)
2006/10/09 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
iis6手工创建网站后无法运行php脚本的解决方法
2017/06/08 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
Laravel框架之解决前端显示图片问题
2019/10/24 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
PHP二维数组分页2种实现方法解析
2020/07/09 PHP
javascript之锁定表格栏位
2007/06/29 Javascript
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
jQuery 版元素拖拽原型代码
2011/04/25 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
2014/01/31 Javascript
JavaScript将XML转成JSON的方法
2015/03/12 Javascript
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
2015/12/03 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
纯js的右下角弹窗实例
2017/03/12 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
2017/12/23 Javascript
详解jQuery中的isPlainObject()使用方法
2018/02/27 jQuery
详解react、redux、react-redux之间的关系
2018/04/11 Javascript
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
Node.js API详解之 timer模块用法实例分析
2020/05/07 Javascript
[05:53]完美世界携手游戏风云打造 卡尔工作室观战系统篇
2013/04/22 DOTA
利用Python实现Windows定时关机功能
2017/03/21 Python
高效测试用例组织算法pairwise之Python实现方法
2017/07/19 Python
python利用socketserver实现并发套接字功能
2018/01/26 Python
Python实现字典按key或者value进行排序操作示例【sorted】
2019/05/03 Python
python频繁写入文件时提速的方法
2019/06/26 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
如何查找和删除数据库中的重复数据
2014/11/05 面试题
运动会四百米广播稿
2014/01/19 职场文书
我的大学生活演讲稿
2014/04/25 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
小学语文教师年度考核个人总结
2015/02/05 职场文书
我是特种兵观后感
2015/06/11 职场文书
圣诞晚会主持词
2015/07/01 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
Nginx如何获取自定义请求header头和URL参数详解
2022/07/23 Servers