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

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

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

Tesseract-OCR

验证码识别技术,Tesseract-OCR:

安装教程:

Tesseract-Ocr-For-PHP

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

PHP">https://github.com/thiagoalessio/tesseract-ocr-for-PHP

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

PHP

<div class="jb51code">
<pre class="brush:PHP;">
<?php
require 'TesseractOCR.php';
function weizhang($car_code,$fdjh)
{
$shanghui = mb_substr($car_code,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,$verify_code_url);
curl_setopt($curl,CURLOPT_COOKIEFILE,$cookie_file);
curl_setopt($curl,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,$post_url);
curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
curl_setopt($curl,$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脚本自动识别验证码查询汽车违章。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


服务器优化必备:深入了解PHP8底层开发原理
Golang的网络编程:如何快速构建高性能的网络应用?
Golang和其他编程语言的对比:为什么它的开发效率更高?
PHP8底层开发原理揭秘:如何利用新特性创建出色的Web应用
将字符重新排列以形成回文(如果可能)在C++中
掌握PHP8底层开发原理和新特性:创建高效可扩展的应用程序
服务器性能优化必学:掌握PHP8底层开发原理
PHP8新特性和底层开发原理详解:优化应用性能的终极指南
将 C/C++ 代码转换为汇编语言
深入研究PHP8底层开发原理:创建高效可扩展的应用程序
C++程序查找法向量和迹
PHP8底层开发原理实战指南:提升服务器效能
重排数组,使得当 i 为偶数时,arr[i] >= arr[j],当 i 为奇数时,arr[i] <= arr[j],其中 j < i,使用 C++ 语言实现
Golang的垃圾回收:为什么它可以减少开发人员的负担?
C++程序:将一个数组的所有元素复制到另一个数组中
Golang:构建智能系统的基石
为什么AI开发者应该关注Golang?
在C和C++中,逗号(comma)的用法是用来分隔表达式或语句
PHP8底层开发原理解析及新特性应用实例
利用PHP8底层开发原理解析新特性:如何构建出色的Web应用