>  기사  >  백엔드 개발  >  인증 코드를 자동으로 식별하고 자동차 위반 사항을 쿼리하는 PHP 스크립트에 대한 자세한 설명

인증 코드를 자동으로 식별하고 자동차 위반 사항을 쿼리하는 PHP 스크립트에 대한 자세한 설명

墨辰丷
墨辰丷원래의
2018-05-29 14:37:351136검색

저는 제 차에 위반사항이 있는지 자주 확인하는데, 제 차량에 위반사항이 있는지 확인하는데 도움이 되도록 이 스크립트를 작성했습니다. 주로 쿠키를 사용하여 양식 제출 및 확인 코드 인식을 시뮬레이션하는 데 사용됩니다. 구체적인 스크립트 작성법은 이번 글을 통해 알아봅시다

내 차에 위반사항이 있는지 자주 확인하는 편이라, 내 차에 위반사항이 있는지 확인하는데 도움이 되도록 현재 스크립트를 작성해봤습니다.

주로 쿠키를 사용하여 양식 제출 및 확인 코드 인식을 시뮬레이션하는 데 사용됩니다.

Tesseract-OCR

인증 코드 인식 기술, Tesseract-OCR: https://github.com/tesseract-ocr/tesseract

설치 튜토리얼: https://github.com/tesseract-ocr/tesseract

Tesseract-Ocr-For-PHP

실행해야 하는 명령을 캡슐화합니다

https://github.com/thiagolesssio/tesseract-ocr-for-php

최적화 없이 스크립트를 직접 입력합니다. 간략한 이해:

PHP



<?php
require &#39;TesseractOCR.php&#39;;
function weizhang($car_code, $fdjh)
{
  $shanghui = mb_substr($car_code, 0, 1, &#39;utf-8&#39;);
  $pre = array(
    &#39;冀&#39; => &#39;he&#39;,
    &#39;云&#39; => &#39;yn&#39;
  );
  $url_pre = $pre[$shanghui];
  $headers = array(
    &#39;Host: &#39;.$url_pre.&#39;.122.gov.cn&#39;,
    &#39;Origin: http://&#39;.$url_pre.&#39;.122.gov.cn&#39;,
    &#39;Referer: http://&#39;.$url_pre.&#39;.122.gov.cn/views/inquiry.html?q=j&#39;,
    &#39;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&#39;
  );
  //初始化变量
  $cookie_file = &#39;cookie.txt&#39;;
  $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(&#39;verifyCode.jpg&#39;))->psm(7)->run();
 $code = explode("\n", $code);
 $code = $code[1];
  echo $code.PHP_EOL;
  if (strlen($code) != 4) {
    return json_encode(array(&#39;code&#39;=>500));
  }
  $data = array(
    &#39;hpzl&#39;=>&#39;02&#39;,
    &#39;hphm1b&#39; => substr($car_code, -6),
    &#39;hphm&#39; => $car_code,
    &#39;fdjh&#39; => $fdjh,
    &#39;captcha&#39; => $code,
    &#39;qm&#39; => &#39;wf&#39;,
    &#39;page&#39; => 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(&#39;verifyCode.jpg&#39;);
  return $result;
}
$count = 0;
// 车牌号
$car_code = &#39;冀Dxxxxx&#39;;
// 发动机后6位
$fdjh = &#39;xxxxxx&#39;;
while (true) {
  $count++;
  if ($count>50) {
    exit(&#39;查询失败&#39;);
  }
  $res = weizhang($car_code, $fdjh);
  $info = json_decode($res, true);
  echo $res.PHP_EOL;
  if ($info[&#39;code&#39;] == 200) {
    echo &#39;车牌号: &#39;. $car_code.PHP_EOL;
    echo &#39;未处理违章数: &#39;.$info[&#39;data&#39;][&#39;content&#39;][&#39;zs&#39;];
    exit();
  }
}


실행 효과

위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다.


관련 권장사항:

php

php 권한 관리

css에서 마우스 트리거 효과를 얻기 위한 2개의 데몬 메소드

위 내용은 인증 코드를 자동으로 식별하고 자동차 위반 사항을 쿼리하는 PHP 스크립트에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.