/** * 根据图片的本地服务器地址识别验证码 * @param $imgPath * @return string $verifycode, 识别好的验证码 * @internal param $imaPath ,图片的地址 */ function get_verifycode($imgPath) { $valite = new valite(); $valite->setImage($imgPath); $valite->getHec(); $verifycode = $valite->run(); return $verifycode; }
private function violation_fz($plate_number, $vehicle_number) { $result = array(); $try_times = 0; preg_match_all('/闽([\\w])([^<]*)/is', $plate_number, $match); $province_number = strtoupper($match[1][0]); $plate_number = trim($match[2][0]); while ($try_times < 3) { $res = $this->_fopen('http://fzjj.easdo.com/jtwf/', 0, '', 'GET'); preg_match("/Set\\-Cookie:([^;]*)/i", $res['header'], $matches); $cookie = $matches[1]; $cookie = trim($cookie); $res = $this->_fopen('http://fzjj.easdo.com/jtwf/image.jsp', 0, '', 'GET', $cookie); file_put_contents('/tmp/captcha.jpg', $res['data']); $valite = new valite(); $valite->setImage('/tmp/captcha.jpg'); $valite->getHec(); $captcha_code = $valite->run(); $to_post = array('carNum' => $plate_number, 'carType' => urldecode('%D0%A1%D0%CD%C6%FB%B3%B5'), 'clsbdm' => $vehicle_number, 'num' => $province_number, 'rand' => $captcha_code); $res = $this->_fopen('http://fzjj.easdo.com/jtwf/queryWfInfo.jsp', 0, http_build_query($to_post), 'POST', $cookie); if (strpos($res['data'], 'search-error')) { if (preg_match_all('/<div class=\\"err\\">([^<]*)<\\/div>/is', $res['data'], $matches3)) { $error = mb_convert_encoding($matches3[1][0], 'UTF-8', 'gbk'); if (!preg_match('/验证码/is', $error)) { $result['error'] = $error; break; } } else { $try_times++; } } else { break; } } if (strpos($res['data'], 'search-result')) { unset($result['error']); $result = $this->parse($res['data'], $to_post, $captcha_code); } return $result; }
<?php // author email: ugg.xchj@gmail.com // 本代码仅供学习参考,不提供任何技术保证。 // 切勿使用本代码用于非法用处,违者后果自负。 include "Valite.php"; $valite = new valite(); // 这里的图片来源www.miibeian.gov.cn网站, // 由于现在这段代码还不能实现自动对图片进行二值化 // 所以,如果你对其他图片进行验证,需要修改valite类中的 // getHec函数 //$valite->bmp2jpeg("ydndw.bmp"); $valite->setImage("captcha.bmp"); $valite->getHec(); $valite->filterInfo(); $valite->dealwithData(); //$valite->DrawDealData(); //$valite->Draw(); //echo "\n 结果是:"; $data = $valite->run(); echo implode("", $data); echo "\n"; /* // 这段代码用于添加验证码库,当你认为库不准确时, // 可以通过这种方式添加验证码库 $keyvalues = array( '010101101101010'=>'0', '010110010010111'=>'1', '111001010100111'=>'2', '111001111001111'=>'3', '001011101111011'=>'4', '111100111001111'=>'5',
$max = $percent; $num = $value; if (intval($percent) > 95) { break; } } } $result .= $num; } $this->data = $result; return $result; } public function __construct() { /*初始化你的特征串数组,越多越精确,需要你自己丰富*/ $this->Keys = array('000111000011111110011000110110000011110000011110000011110000011110000011110000011110000011011000110011111110000111000' => 0, '00011111000011100011100111000111111110000111111000001111110000011111110000111111100011110111000111000011111000' => 0, '00011110000011111100011110111001110001100111000111011000011101100001110110000111111000011101110001100111000110011100111000111111000001111000' => 0, '001111000011111100111001110111000110111000111110000111110000111110000111110000111111000111111000110011001110011111100001111000' => 0, '0011110001111110111111111110011111100111110000111100001111000011110000111100001111100111111001110111111000111100' => 0, '000111100001111110011111111011000011011000011011111111011000011011100111011100111111000011011000011011101111001111110000111100' => 0, '000111100001111110011111111011000011011000011011111111011000011011100111011100111111000011011000011011101111001111110000111100' => 0, '00111110000111111100111101111011100011101110001110111000111011100011101110001111111000111011101111101111011110111101111001111111000011111000' => 0, '001111100011111110111001110111000111111000111111000111111000111111000111111000111111000111111000111111101110011111110001111100' => 0, '000111110000011100011100111100011110111100101111111100011110111100011111111100011110111100011110011110111100000111111000' => 0, '000111111000011110011100011100011110111100001110111100001111111100001111111100001111111100011110011110011100001111111000' => 0, '00011111000011111110011110111101110011110111000111111100011111110001111111000111111100011101110001110111001111011100111000111111100001111100' => 0, '001110001110011110001110011110001111011100000111111100000111011110001111011110001110001110001110000011111000000000100000' => 0, '000111000011111000011111000000011000000011000000011000000011000000011000000011000000011000000011000011111111011111111' => 1, '0001100001111001111100111110001111000111000011100001111001111111111111' => 1, '00001110001111001111111111111110111110011100001110000111000011100001110000111000011100001110000111' => 1, '000011001111011111111111111111110111000011000111000111000111000111000111000111000011' => 1, '0011111100111001111011110011101110001110000001111000001110000011000000111111111111111111111111111111' => 2, '000111111000011110111110011110011110011110011110000000011100000000000000000110000100001111111110111111111111111111111111' => 2, '01111111100111101111101111001111011110011110000001111000000111000000111000000111111111101111111111011111111111' => 2, '00111111000011111110011111111101110001110000000111000000111100000111110000011110000011111000111110000011111000011111000001111111111111111111' => 2, '0011111100111001111011110011101110001111000000111000000000000011000000011111111111111111111111111111' => 2, '011111100011111110111111111111000111000000111000001111000011111000011110000111110011111000011111000111110000111111111111111111' => 2, '00011111000111111110011100111101110001110000000111000000111100000011100000111110000111110000111111000011110000011111110011111111111111111111' => 2, '011111000111111110100000110000000110000001100011111000011111100000001110000000111000000110100001110111111100011111000' => 3, '01111111001111011111111100111111110011110000001111000001111000001111000000001111000000111111100011111110001111111001111101111111000000010000' => 3, '00111111100011100111100111000111001110101111000010111100000001110000000111000000000111100000000111111100001111111100011111111001111000111111000' => 3, '00011111100011100111110111100111101110001111000000011100000001111000000111000000000011100000000111101110001111111100011110111001111100111111110' => 3, '001111000011111100111001110111001110000001110000111100000111100000001110000000111000000111111000111111001110011111110001111000' => 3, '0011110001111110111001111110011100000111001111000001111000011111000001110100001111000011111001110111111001111100' => 3, '00011110000011100111000111000111001100001110000000111100000011110000001111100000000111100000000111001100001111111100111101111011110001111111100' => 3, '001111100011111110111101111111001111000011110000111110000111110000001111000000111000000111111001111111101111011111110001111100' => 3, '000001100000011100000011100000111100001101100001101100011001100011001100111111111111111111000001100000001100000001100' => 4, '00000011000000011100000011111000001111100001111110001111110000110111100111011110111001111011111111111111111111000001111000000011100000001100' => 4, '00000011000000011100000011110000001111100001111110000110111000110011100111001110011000111011111111111111111111000000111000000011100000001100' => 4, '00000011100000001111000000011111000000111110000000111100000001111000000011100011000111101111111111111111111111000000111100000000110000000001100' => 4, '111111110111111110110000000110000000110000000111110000111111100000001110000000111000000110100001110111111100011111000' => 5, '00111111111001111111100011111111000100000000011000000000011111110001100011110000000011100000000111101110001111111100011100111001111000111111000' => 5, '011111110011111110011100000011000000111111100111111110111001111000000111000000111000000111111000111111001110011111110001111100' => 5, '001111110011111110011100000011000000111111100111111110111001110000000111000000111000000111111000111111001110011111110001111000' => 5, '000100000011111110011111110111110000111110000111111100111111110111111110000001111000000111110000111111001110111011110111111110011111100' => 5, '011111111011111111011100000011100000111111100111111110111001111000000111000000111000000111111000111111001111011111110001111100' => 5, '0011111110001111111100111111110110000000011000000001111111000010011110000000111100000001110110001111111100111101110111100011111100' => 5, '001111111101111111110011111111' => 5, '0111111111011111111101111111110100000000010000000011111111001110011111000000111100000011111110001111111000111111100111100111111100' => 5, '000111100001111110011000010011000000110000000110111100111111110111000111110000011110000011011000111011111110000111100' => 6, '00000011100000111100000011100000001111000000011100000001111111110011110011110111100011111111000111111110001111111100011110111001110000011111000' => 6, '0011110011111110111001111110001111111110111111101110011111100111111001111110001111100011111111110111111000111100' => 6, '00000011100000011100000011110000001111000000011100010001111111110011111011110111100011111111000111111110001111111100011110111100111000111111100' => 6, '001111100011111110111001110111000000111111100111111110111101110111000111111000111111000111111000111111101110011111110001111000' => 6, '001111100011111110111101111111000000111111100111111110111111111111001111111000111111000111111000111111101111011111110001111100' => 6, '001111100011111110111001111111000000111111100111111110111101110111000111111000111111000111111000111111101110011111110001111100' => 6, '001111100011111110011001111111000000111111100111111110111101110111000111111000111111000111111000111111101111011111110001111100' => 6, '00000011100000111100000011110000001111000000011100000001111111110011111001110111100011111111000111111110001111111100011110111101111000111111000' => 6, '0000001110000011100000111000000111000000011100000011111111101111000111111000011111100001111110000111111100011101110001100011111100' => 6, '00000011100000111100000011100000001110000000011100000001111111110011110011110111100011111111000111111110001111111100011110111001110000011111000' => 6, '00011111000011111110011110111001110000000111111100011111111001111011110111000111111100011101110001110111000111011110111100111111100001111100' => 6, '011111111011111111000000011000000010000000110000001100000001000000011000000010000000110000000110000001100000001100000' => 7, '1111111111111111111011111111101000000100100000110000000010000000011000000001000000001000000001100000000100000000110000000010000000' => 7, '1111111111111111000011110000111000001110000111000011100000111000001110000111100001110000011100000111000000110000' => 7, '1111111111111111000011110000111000001110000111000011100000111000001110000111000001110000011100000111000000110000' => 7, '111111111111111111000001110000001100000011100000011000000111000000110000001110000001110000001110000001100000001100000011100000' => 7, '111111111111111111000001111000001110000011100000011100000111000000111000001111000001110000001110000001110000001110000001100000' => 7, '111111111111111111000001110000001110000011100000011000000111000000110000001110000001110000001110000001100000001100000011100000' => 7, '01111111111111111111000000111000000111000000011100000011100000001110000001111000000111000000011100000001110000001110000000111000000011100000' => 7, '1111111111011111111101111111110100000110010000011000000001000000001100000000100000000100000000110000000010000000011000000001000000' => 7, '1111111111111111111011111111101000000100100000010000000010000000011000000001000000001000000001100000000100000000110000000010000000' => 7, '111111111111111111111111111100000010' => 7, '001111100011111110011000110011000110011101110001111100001111100011101110110000011110000011111000111011111110001111100' => 8, '001111100011111110111101110111001111111001111111101110011111110011111110111001111111000111111000111111101111111111110001111100' => 8, '00011111100011110011100111000111111110001111111110011100111111111000111111110011101111111111000111111110000111111100011110111000111000111111100' => 8, '001111100011111110111101111111001111111001111111101111011111110011111110111101111111000111111000111111001111111111110001111100' => 8, '00011111000011100011100111000111011110001110011110011100111111110000111111100011101111101110000111111100001111111000001111111000111000111111000' => 8, '001111111100011110011110011110011110011100001110011111111100001111111100001111111100001111111110011100001111111100001111011100001111011110001110000111111100000000110000' => 8, '001111100011111110111001110111000110111000110111001110011111100011111100111001110110000111111000111111001110111111110001111100' => 8, '000110000111111001111110111001111110011111100111111001111111111011111111111111111100001111100111111111111111111101111110' => 8, '001111111000011100011110011100011110111100011110011110011100011111111000001111111100011101111110111110011110111100001111111100001110011100011100001111111000' => 8, '00111110000111111100111101111011110111101111011110011101110001111110000111111100111001111011100011111110001111111111111001111111000011111000' => 8, '00011001100011100011101111000111111110001111111110011100111111110000011111100011101111111110000111111100000111111100001111111000111000111000000' => 8, '00011111100011100111101111000111011110001111111110011100111111110000111111100011101111101110000111111100001111111000011111111000111000111000000' => 8, '00011000000011100011101111000111011110001110011110011100111111110000111111100011101111101110000111111100001111111100001111111000111000111000000' => 8, '00011110000011111100011111111001100011100111001110011100111000111111000111111110011100111011100001111110000111011100111001111111100001111100' => 8, '001111000011111110111000111110000011110000011111000111011111111001111011000000011000000110010000110011111100001111000' => 9); } } for ($p = 1; $p < 11; $p++) { $img = "images/pic" . $p . ".jpeg"; //验证码地址 $v = new valite(); // $val=file_get_contents($img); // file_put_contents(SAE_TMP_PATH.'1.jpg',$val);//写入SAE临时文件 $v->setImage($img); //传输该图片 $v->getHec(); $res = $v->run(); //结果/*这个验证码的识别率在95%以上,如果对于有字母的需要为其扩充特征串类,对于有复杂变化的还需要进行其他处理*/ echo $res . "<br>"; }