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导出oracle库的php代码
Apr 20 PHP
PHP 批量更新网页内容实现代码
Jan 05 PHP
PHP生成UTF8文件的方法
May 15 PHP
11个PHPer必须要了解的编程规范
Sep 22 PHP
Zend Guard使用指南及问题处理
Jan 07 PHP
PHP内存使用情况如何获取
Oct 10 PHP
php构造方法中析构方法在继承中的表现
Apr 12 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
Jul 13 PHP
PHP开发实现微信退款功能示例
Nov 25 PHP
php把字符串指定字符分割成数组的方法
Mar 12 PHP
php 处理png图片白色背景色改为透明色的实例代码
Dec 10 PHP
php intval函数用法总结
Apr 14 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
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
最佳JS代码编写的14条技巧
2011/01/09 Javascript
Javascript中的isNaN函数使用说明
2011/11/10 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
2016/04/23 Javascript
基于js对象,操作属性、方法详解
2016/08/11 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
2017/05/08 jQuery
Vue中建立全局引用或者全局命令的方法
2017/08/21 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
基于Vue的商品主图放大镜方案详解
2019/09/19 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
js轮播图之旋转木马效果
2020/10/13 Javascript
如何正确解决VuePress本地访问出现资源报错404的问题
2020/12/03 Vue.js
[01:36]极致酷炫!TI9典藏宝瓶+撼地者至宝展示
2019/06/11 DOTA
linux系统使用python监控apache服务器进程脚本分享
2014/01/15 Python
Python md5与sha1加密算法用法分析
2017/07/14 Python
Django中针对基于类的视图添加csrf_exempt实例代码
2018/02/11 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
2018/07/09 Python
浅谈Python traceback的优雅处理
2018/08/31 Python
Python中捕获键盘的方式详解
2019/03/28 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
2020/09/26 Python
CSS3动画效果回调处理详解
2014/12/10 HTML / CSS
巴黎卡诗加拿大官网:Kérastase加拿大
2018/11/12 全球购物
应届生服装设计自我评价
2013/09/20 职场文书
护理专业毕业生自荐信范文
2014/01/05 职场文书
学习十八大报告感言
2014/02/04 职场文书
投标承诺书范本
2014/03/27 职场文书
2014客服代表实习自我鉴定
2014/09/18 职场文书
群众路线表态发言材料
2014/10/17 职场文书
行政复议决定书
2015/06/24 职场文书
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android