Maison >développement back-end >tutoriel php >Explication détaillée du script PHP pour identifier automatiquement le code de vérification et interroger les violations de voiture

Explication détaillée du script PHP pour identifier automatiquement le code de vérification et interroger les violations de voiture

墨辰丷
墨辰丷original
2018-05-29 14:37:351183parcourir

Je vérifie souvent si ma voiture présente des violations, j'ai donc écrit ce script pour m'aider à vérifier si ma voiture présente des violations. Principalement utilisé pour simuler la soumission de formulaires et la reconnaissance du code de vérification avec les cookies. Apprenons comment écrire le script spécifique à travers cet article.

Je vérifie souvent si ma voiture présente des violations, j'ai donc écrit ce script pour m'aider à vérifier si ma voiture présente des violations.

Principalement utilisé pour simuler la soumission de formulaires et la reconnaissance du code de vérification avec les cookies.

Tesseract-OCR

Technologie de reconnaissance de code de vérification, Tesseract-OCR : https://github.com/tesseract-ocr/tesseract

Installation Tutoriel : https://github.com/tesseract-ocr/tesseract

Tesseract-Ocr-For-PHP

Encapsuler les commandes qui doivent être exécutées

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

Chargez directement le script sans aucune optimisation, jetez simplement un bref coup d'œil :

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();
  }
}


Effet d'exécution

Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.


Recommandations associées :

Deux méthodes démon en php

Gestion des autorisations PHP

css pour obtenir l'effet de déclenchement de la souris

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn