微信公众平台开发(94) 违章查询

 

在微信公众平台开发违章查询是一件比较辛苦的事,因为违章查询的数据在各省市公安部门的服务器上,对外只有网页查询提供,所以只有去分析网页,然后通过模拟提交来实现。

黑龙江违章查询地址为 http://www.hljjj.gov.cn:8081/Home/Wfcx

实际查询时,抓取到的请求如下

通过查看网页源码得到验证:

 1 <script type="text/javascript">
 2     function error() {
 3         showDialog(false);
 4         alert("数据库繁忙,请稍后重试!");
 5     }
 6     function beforesend() {
 7         showDialog(true);
 8     }
 9     /** --------- AJAX ------------ */
10     function queryajax() {
11         var ajaxRequest = new AjaxRequest();
12         ajaxRequest.setUrl("/Home/getWfcx"); //请求之前
13         ajaxRequest.setDataType("json");
14         ajaxRequest.setUsePOST(); //post方式
15         ajaxRequest.setBeforeSend(beforesend); //请求之前
16         ajaxRequest.setSuccess(querysuccess); //请求成功
17         ajaxRequest.setError(error); //请求失败
18         var queryString = "";
19         var hpzl = $("#hpzl").val();
20         var dy = $("#dy").val();
21         var xzqh = $("#xzqh").val();
22         var hphm = $("#hphm").val();
23         var clsbdh = $("#clsbdh").val();
24         var jkbj = $("input[name='jkbj'][checked]").val();
25         var yzm = $("#yzm").val();
26         queryString = "hpzl=" + hpzl + "&dy=" + dy + "&xzqh=" + xzqh + "&hphm=" + hphm + "&clsbdh=" + clsbdh + "&jkbj=" + jkbj;
27         ajaxRequest.setQueryString(queryString);
28         ajaxRequest.sendRequest();
29     }
30
31     function querysuccess(json) {
32         var json_data = json;
33         showDialog(false);
34         if (json_data[0] == "0") {
35             $('#comments').empty();
36             $('#comments').append(json_data[2]);
37         } else {
38             $('#comments').empty();
39             alert(json_data[1]);
40         }
41         img();
42     }
43     function img() {
44         $('#imgDefault').attr('src', '/Home/Yzm?time=' + (new Date().getTime()));
45     }
46     $(document).ready(function () {
47         img();
48     });
49 </script>

可以看到,实际查询路径为 /Home/getWfcx,也就是说,真实的查询地址为

http://www.hljjj.gov.cn:8081/Home/getWfcx

查询请求为 

hpzl=02&dy=黑&xzqh=A&hphm=EZ352&clsbdh=LGBF1DE099R156742&jkbj=0&ts=1396242672751

返回的内容如下:

<table width="100%"  border="0" cellspacing="1" cellpadding="0" class="list_table" align="center"><tr height='20px' class="list_head"><td width='6%'>号牌号码</td><td width='6%'>号牌种类</td><td width='10%'>违法时间</td><td width='5%'>金额</td><td width='3%'>记分</td><td width='5%'>缴款状态</td><td width='5%'>处理状态</td><td width='18%'>违法地点</td><td width='15%'>违法内容</td><td width='12%'>决定书编号</td><td width='15%'>采集机关</td></tr><tr class='list_body_out' onMouseOver="this.className='list_body_over'" onMouseOut="this.className='list_body_out'"><td>黑AEZ352</td><td>小型汽车</td><td>2013-12-30 15:14:00</td><td>100</td><td>3</td><td>未缴款</td><td>未处理</td><td>国道绥满公路578公里</td><td>驾驶中型以上载客载货汽车、危险物品运输车辆以外的其他机动车行驶超过规定时速未达20%的</td><td></td><td>黑龙江省绥化市肇东市交警大队</td></tr><tr class='list_body_out' onMouseOver="this.className='list_body_over'" onMouseOut="this.className='list_body_out'"><td>黑AEZ352</td><td>小型汽车</td><td>2013-7-16 14:37:00</td><td>100</td><td>0</td><td>未缴款</td><td>未处理</td><td>比优特旗舰店</td><td>不按规定停车</td><td></td><td>黑龙江省鹤岗处罚大队</td></tr><tr class='list_body_out' onMouseOver="this.className='list_body_over'" onMouseOut="this.className='list_body_out'"><td>黑AEZ352</td><td>小型汽车</td><td>2013-7-15 18:42:00</td><td>100</td><td>0</td><td>未缴款</td><td>未处理</td><td>比优特旗舰店</td><td>不按规定停车</td><td></td><td>黑龙江省鹤岗处罚大队</td></tr><tr class='list_body_out' onMouseOver="this.className='list_body_over'" onMouseOut="this.className='list_body_out'"><td>黑AEZ352</td><td>小型汽车</td><td>2013-6-26 9:41:00</td><td>100</td><td>0</td><td>未缴款</td><td>未处理</td><td>防疫站</td><td>不按规定停车</td><td></td><td>黑龙江省鹤岗处罚大队</td></tr><tr class='list_body_out' onMouseOver="this.className='list_body_over'" onMouseOut="this.className='list_body_out'"><td>黑AEZ352</td><td>小型汽车</td><td>2013-6-17 12:40:00</td><td>100</td><td>3</td><td>未缴款</td><td>未处理</td><td>哈尔滨市-铁路街全路段</td><td>违反禁止标线指示</td><td></td><td>巡逻大队</td></tr><tr class='list_body_out' onMouseOver="this.className='list_body_over'" onMouseOut="this.className='list_body_out'"><td>黑AEZ352</td><td>小型汽车</td><td>2013-6-7 10:44:00</td><td>100</td><td>0</td><td>未缴款</td><td>未处理</td><td>市农行道口</td><td>不按规定停车</td><td></td><td>黑龙江省鹤岗处罚大队</td></tr><tr class='list_body_out' onMouseOver="this.className='list_body_over'" onMouseOut="this.className='list_body_out'"><td>黑AEZ352</td><td>小型汽车</td><td>2013-5-26 18:37:00</td><td>100</td><td>0</td><td>未缴款</td><td>未处理</td><td>老交通局</td><td>不按规定停车</td><td></td><td>黑龙江省鹤岗处罚大队</td></tr><tr class='list_body_out' onMouseOver="this.className='list_body_over'" onMouseOut="this.className='list_body_out'"><td>黑AEZ352</td><td>小型汽车</td><td>2013-5-14 9:13:00</td><td>100</td><td>0</td><td>未缴款</td><td>未处理</td><td>老交通局</td><td>不按规定停车</td><td></td><td>黑龙江省鹤岗处罚大队</td></tr></table>

其返回的结果不是一个标准的json,而是一个网页格式,所以还需要html解析处理,

而对于请求发送,直接构造字符串用curl进行POST提交

实现代码如下:

 1 function getTrafficInfo($longnumber)
 2 {
 3     if (!preg_match("/^违章#黑[A-Ra-r]\w{5}#\w{17}$/",$longnumber)){        //城市简拼
 4         return "查询格式错误!\n请发送'违章#车牌号码#机动车识别代号'\n例如'违章#黑AEZ352#LGBF1DE099R156742'";
 5     }
 6
 7     $headers = array(
 8         "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1",
 9         "Accept: application/json, text/javascript, */*",
10         "Accept-Language: en-US,en;q=0.8",
11         "Referer: http://www.hljjj.gov.cn:8081/Home/Wfcx",
12         "X-Requested-With: XMLHttpRequest",
13         "Content-Type: application/x-www-form-urlencoded",
14     );
15
16     $numberarray = explode ("#", $longnumber);
17     $provinceCode = substr($numberarray[1], 0, 3);
18     $cityCode = substr($numberarray[1], 3, 1);
19     $plateNumber = substr($numberarray[1], 4, strlen($numberarray[1]) - 4);
20     $vehicleNumber = $numberarray[2];
21     $curTime = explode (" ", microtime());
22     $curMicroTime = round($curTime[1].($curTime[0]*1000));
23
24     $post2 = "hpzl=02&dy=黑&xzqh=$cityCode&hphm=$plateNumber&clsbdh=$vehicleNumber&jkbj=0&ts=$curMicroTime";
25
26     $ch = curl_init();
27     curl_setopt($ch, CURLOPT_URL, "http://www.hljjj.gov.cn:8081/Home/getWfcx");
28     curl_setopt($ch, CURLOPT_HEADER, false);
29     curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
30     curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
31     curl_setopt($ch, CURLOPT_POSTFIELDS, $post2);
32     $content=curl_exec($ch);
33     curl_close($ch);
34     $output = json_decode($content, true);
35
36     if($output[0] != "0"){
37         return "【错误】类型:".$output[0].", 原因:".$output[1];
38     }else{
39         $str = $output[2];
40         include('simple_html_dom.php');
41         $html = str_get_html($str);
42         $result = "";
43         $titleArray = array("号码", "种类", "时间", "金额", "记分", "缴款", "处理", "地点", "内容", "编号", "机关");
44         foreach($html->find('table tr') as $tr){
45             if ($tr->find('td', 0)->innertext == "号牌号码"){
46                 continue;
47             }
48             for ($i = 2; $i <= 10; $i++) {
49                 $result .= $titleArray[$i].":".$tr->find('td', $i)->innertext."\n";
50             }
51             $result .= "\n";
52             if (strlen($result) > 2000){break;}
53         }
54         return trim($result);
55     }
56 }

 

 

 

====================================================================

方倍工作室微信公众平台账号关注方法:
1. 微信通讯录-添加朋友-查找公众号-搜索“方倍工作室”
2. 微信通讯录-添加朋友-搜号码-输入“pondbaystudio”
3. 使用微信扫描下面的二维码

时间: 2025-01-02 08:07:45

微信公众平台开发(94) 违章查询的相关文章

微信公众平台开发教程

本系列微信公众平台教程以PHP+MySQL为开发环境,介绍了微信公众平台开发模式下基础接口.自定义菜单.高级接口.WeiXin JS接口.微信支付等接口以及在此基础上的功能或应用开发的方法及技巧,案例极具实用价值,是学习微信公众平台开发实战的经典教材.   配套书籍 <微信公众平台开发最佳实践> 由方倍工作室编写,覆盖基础接口.自定义菜单.高级接口.微信支付.转发分享等五大接口,包含近30个案例及技巧,已成功帮助无数人进入微信开发领域. 购买地址        准备工作 微信公众平台的注册 介

微信公众平台开发(68)苹果IMEI查询

微信公众平台开发 苹果IMEI查询 苹果序列号查询 iPhone/iPad/iPod/Mac 作者:方倍工作室 地址:http://www.cnblogs.com/txw1958/p/weixin69-apple-imei.html   一.什么是IMEI  国际移动设备识别码(IMEI:International Mobile Equipment Identification Number)是区别移动设备的标志,储存在移动设备中,可用于监控被窃或无效的移动设备.IMEI可用移动终端设备通过键入

微信公众平台开发(43)火车时刻查询

微信公众平台开发 微信公众平台开发模式 企业微信公众平台 火车票接口 列车时刻接口 火车车次查询作者:方倍工作室 原文: http://www.cnblogs.com/txw1958/p/weixin-43-train.html   一.火车查询接口 在百度找到去哪儿的接口 http://train.qunar.com/qunar/checiInfo.jsp?ex_track=&q=t110&format=json&cityname=123456&ver=137381321

微信公众平台开发(63)汽车查询

微信公众平台开发 微信公众平台开发模式 企业微信公众平台 汽车查询 作者:方倍工作室 地址:http://www.cnblogs.com/txw1958/p/weixin-63-coach.html      核心代码:   <?php include('simple_html_dom.php'); // var_dump(getCoachInfo("广州到深圳")); function getCoachInfo($keyword) { $divide = "到&quo

微信公众平台开发最佳实践

<微信公众平台开发最佳实践>共分10章,案例程序采用广泛流行的PHP.MySQL.XML.CSS.JavaScript.HTML5等程序语言及数据库实现.系统完整地介绍微信公众平台基础接口.自定义菜单.高级接口.微信支付.分享转发等所有相关技术,以生活类.娱乐类.企业类微信开发为切入点,讲解了30多个功能或应用案例. 前言 自从方倍工作室在博客园推出微信公众平台开发系列教程后,受到广大微信开发人员及爱好者的热情关注,相头文章的日访问量高达上万人次,而<微信公众平台开发入门教程>一门

微信公众平台开发(97) 图文消息

关键字:微信公众平台 开发模式 图文消息作者:方倍工作室原文:http://www.cnblogs.com/txw1958/p/weixin-97-news.html   在这篇微信公众平台开发教程中,我们将介绍如何灵活的使用图文消息功能.我们将只介绍被动回复消息中的图文消息,发送客服消息及高级群发消息接口的发送的图文消息与本文介绍的图文消息的各情况基本一致. 本文分为以下四个部分: 图文消息的定义 图文消息的实现 图文消息的类型 图文消息的回复   一.图文消息的定义 在微信公众平台消息中,发

微信公众平台开发(82) 天气预报

在这篇教程中,我们将介绍如何在微信公众平台上开发天气预报功能.我们将使用中国天气网的气象数据接口来获取天气信息. 这篇教程将介绍以下内容: 获取中国天气网的气象数据 在微信公众平台中回复天气   一.中国天气网 中国天气网提供了丰富的气象数据接口.下面我们介绍主要的几个: 国家根节点接口: http://flash.weather.com.cn/wmaps/xml/china.xml 该接口以XML格式列出所有的省(自治区.直辖市)的中文名称(quName)和拼音名称(pyName)及省会城市的

对微信公众平台开发的消息处理

这几天有点空,做了个Android App后,想着对接一下公司的微信平台,以便让客户更方便查询,在研究微信平台中,要注意以下几点: 1.微信验证消息真实性是用Get方式到你提交的url 2.用户发送的消息.事件等都是通过Post方式提交过来 3.微信服务器端发送过来的,是xml格式,通过HttpRequest.InputStream获取 4.在处理用户消息的时候,如果你要返回信息的话,您只要输出xml格式的字符串就可以了. 如何读取微信客户端信息: var stream = Request.In

微信公众平台开发入门教程

在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. 本系列教程将引导你完成如下任务: 创建新浪云计算平台应用 启用微信公众平台开发模式 基础接口消息及事件 微信公众平台PHP SDK 微信公众平台开发模式原理 开发天气预报功能 第一章 申请服务器资源 创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+M