打码平台php源码,正方验证码识别(非打码平台)(已解决运行出现4个#)
本人用的是網上的Java版本,經過本人的改良只剩下驗證碼識別。
有人運行出現了4個#,解決方法如下:
1、如果是單獨運行imagepreprocess.java則把srcpath和trainpath改成你此項目的具體路徑+字典路徑,如下:public??static?String?srcPath?=?"C:\\Users\\liujin\\Workspaces\\MyEclipse?10\\WhxyJw\\WebRoot\\images\\ctrackcode\\srcimg\\";
public??static?String?trainPath?="C:\\Users\\liujin\\Workspaces\\MyEclipse?10\\WhxyJw\\WebRoot\\images\\ctrackcode\\trainimg\\";
2、如果是jsp運行,則修改項目里面的basepath.jsp
將此工程導入myeclipseImagePreProcess.srcPath?=?ctrackcode_srcimg;
ImagePreProcess.trainPath?=?ctrackcode_trainimg;
String?name?=?request.getParameter("c").toString();??????//給圖片加個緩存名稱
String?checkcodeUrl?=?request.getParameter("url").toString();??//此圖片的地址
String?checkCodeImg="a";
String?secretcode?=?"";
try{
checkCodeImg?=?ImagePreProcess.downloadImage(checkcodeUrl+"?",?name+".png");
}catch(Exception?e){
}
if?(checkCodeImg?!=?"a"?||checkCodeImg?!=?null?)?{
secretcode?=?ImagePreProcess.getAllOcr(checkCodeImg);
File?ml?=new?File(checkCodeImg);
ml.delete();
out.print(secretcode);
}
測試地址:
若非正方教務平臺的請改這里的值:
----非正方區----
修改那兩個值
----非正方結束----
由于眾所周知,驗證碼需要加入cookie去獲取
所以我單獨寫了一個php的請求驗證碼:$url?=?"http://61.142.33.204/CheckCode.aspx";
$curl?=?curl_init();
if($_POST){
$cookie=$_POST['c'];
}else{
$cookie=$_GET['c'];
}
curl_setopt($curl,?CURLOPT_URL,?$url);
curl_setopt($curl,?CURLOPT_COOKIE,?$cookie);
curl_setopt($curl,?CURLOPT_TIMEOUT,?10);
curl_setopt($curl,?CURLOPT_RETURNTRANSFER,?1);
curl_setopt($curl,?CURLOPT_FOLLOWLOCATION,?1);
$data?=?curl_exec($curl);
curl_close($curl);
$filename=substr($cookie,-10);
$a="./yzm/2".$filename.".png";??//將其保存為圖片放在服務器
$fp?=?fopen($a,"wb");
fwrite($fp,?$data);
fclose($fp);
然后用保存在服務器的圖片,用PHP請求識別://大眾性
$login_url="http://www.kejibu.org:8080/WhxyJw/yzm.jsp";
$l=$login_url."?c={$filename}&url=http://www.kejibu.org/cx/yzm/2{$filename}.png";
//部分PHP傳值會出現問題則用下面的
/*
$login_url="http://www.kejibu.org:8080/WhxyJw/yzm.jsp";
$fileurl="http://www.kejibu.org/cx/yzm/2{$filename}.png";
$fileurl=urlencode($fileurl);
$l=$login_url."?c={$filename}&url={$fileurl}";
*/
$ch=curl_init();
curl_setopt($ch,?CURLOPT_URL,$l);
curl_setopt($ch,?CURLOPT_FOLLOWLOCATION,?1);
curl_setopt($ch,?CURLOPT_RETURNTRANSFER,?1);
curl_setopt($ch,?CURLOPT_TIMEOUT,?10);
$yyy=curl_exec($ch);
curl_close($ch);
echo?substr($yyy,-4);
整合出來:$url?=?"http://61.142.33.204/CheckCode.aspx";
$curl?=?curl_init();
if($_POST){
$cookie=$_POST['c'];
}else{
$cookie=$_GET['c'];
}
curl_setopt($curl,?CURLOPT_URL,?$url);
curl_setopt($curl,?CURLOPT_COOKIE,?$cookie);
curl_setopt($curl,?CURLOPT_TIMEOUT,?10);
curl_setopt($curl,?CURLOPT_RETURNTRANSFER,?1);
curl_setopt($curl,?CURLOPT_FOLLOWLOCATION,?1);
$data?=?curl_exec($curl);
curl_close($curl);
$filename=substr($cookie,-10);
$a="./yzm/2".$filename.".png";
$fp?=?fopen($a,"wb");
fwrite($fp,?$data);
fclose($fp);
$login_url="http://www.kejibu.org:8080/WhxyJw/yzm.jsp";
$l=$login_url."?c={$filename}&url=http://www.kejibu.org/cx/yzm/2{$filename}.png";
$ch=curl_init();
curl_setopt($ch,?CURLOPT_URL,$l);
curl_setopt($ch,?CURLOPT_FOLLOWLOCATION,?1);
curl_setopt($ch,?CURLOPT_RETURNTRANSFER,?1);
curl_setopt($ch,?CURLOPT_TIMEOUT,?10);
$yyy=curl_exec($ch);
curl_close($ch);
echo?substr($yyy,-4);
unlink($a);?????????????//刪除服務器保存的驗證碼圖片
返回的直接是識別出來的驗證碼。
正確率比對地址:
總結
以上是生活随笔為你收集整理的打码平台php源码,正方验证码识别(非打码平台)(已解决运行出现4个#)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java一些必会算法(转自落尘曦的博客:
- 下一篇: 动态规划算法php,php算法学习之动态