微信公眾平台開發(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. 使用微信掃描下面的二維碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM