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 相关文章推荐
PHP4实际应用经验篇(5)
Oct 09 PHP
PHP实现用户认证及管理完全源码
Mar 11 PHP
PHP工程师VIM配置分享
Dec 15 PHP
php编程每天必学之表单验证
Mar 01 PHP
图文详解PHP环境搭建教程
Jul 16 PHP
php+mysql查询实现无限下级分类树输出示例
Oct 03 PHP
常用PHP封装分页工具类
Jan 14 PHP
PHP实现随机生成水印图片功能
Mar 22 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
May 23 PHP
PHP静态延迟绑定和普通静态效率的对比
Oct 20 PHP
PHP实现的一致性Hash算法详解【分布式算法】
Mar 31 PHP
tp5使用layui实现多个图片上传(带附件选择)的方法实例
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
常用星际术语索引(新手指南)
2020/03/04 星际争霸
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/29 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
2012/08/01 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
2014/04/01 PHP
JavaScript创建命名空间的5种写法
2014/06/24 PHP
php+ajax实时输入自动搜索匹配的方法
2014/12/26 PHP
phalcon框架使用指南
2016/02/23 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
2018/09/18 PHP
Laravel 自带的Auth验证登录方法
2019/09/30 PHP
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
2012/02/10 Javascript
详解js中构造流程图的核心技术JsPlumb
2015/12/08 Javascript
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
vue+animation实现翻页动画
2020/06/29 Javascript
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
Python将阿拉伯数字转换为罗马数字的方法
2015/07/10 Python
python中根据字符串调用函数的实现方法
2016/06/12 Python
Pycharm导入Python包,模块的图文教程
2018/06/13 Python
python3学生名片管理v2.0版
2018/11/29 Python
使用python实现画AR模型时序图
2019/11/20 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
2021/02/18 Python
前端制作动画的几种方式(css3,js)
2016/12/12 HTML / CSS
学生励志演讲稿
2014/01/06 职场文书
总经理司机岗位职责
2014/02/06 职场文书
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
私人会所最新创业计划书范文
2014/03/24 职场文书
投资协议书范本
2014/04/21 职场文书
小学语文教学经验交流材料
2014/06/02 职场文书
务虚会发言材料
2014/12/25 职场文书
大三学生英语考试作弊检讨书
2015/01/01 职场文书
销售口号霸气押韵
2015/12/24 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python
动画《平凡职业成就世界最强》宣布制作OVA
2022/04/01 日漫