導航:首頁 > 編程語言 > php模擬登錄驗證碼識別

php模擬登錄驗證碼識別

發布時間:2023-09-14 17:24:18

『壹』 php中模擬登錄的驗證碼問題應該如何解決

基本思路:

首先獲取一個cookies值,再帶著這個cookies去獲取驗證碼圖片,你再帶著驗證碼值和登錄數據去模擬post登錄。下面是一個模擬獲取驗證碼的。

這里忽略獲取cookies的過程。注意文件為UTF-8無BOM格式

?php
header('Content-Type:image/png');
$url="http://hbyw.e21.e.cn/global/gd.php";//圖片鏈接
$ch=curl_init();
//Cookie:PHPSESSID=
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_COOKIE,'PHPSESSID=');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,0);
curl_setopt($ch,CURLOPT_TIMEOUT,0);//忽略超時
curl_setopt($ch,CURLOPT_NOBODY,false);
$str=curl_exec($ch);
curl_close($ch);

『貳』 PHP圖形驗證碼識別

<?php
Header("Content-type: image/gif");
/*
* 初始化
*/
$border = 0; //是否要邊框 1要:0不要
$how = 4; //驗證碼位數
$w = $how*15; //圖片寬度
$h = 20; //圖片高度
$fontsize = 5; //字體大小
$alpha = "abcdefghijkmnopqrstuvwxyz"; //驗證碼內容1:字母
$number = "023456789"; //驗證碼內容2:數字
$randcode = ""; //驗證碼字元串初始化
srand((double)microtime()*1000000); //初始化隨機數種子

$im = ImageCreate($w, $h); //創建驗證圖片

/*
* 繪制基本框架
*/
$bgcolor = ImageColorAllocate($im, 255, 255, 255); //設置背景顏色
ImageFill($im, 0, 0, $bgcolor); //填充背景色
if($border)
{
$black = ImageColorAllocate($im, 0, 0, 0); //設置邊框顏色
ImageRectangle($im, 0, 0, $w-1, $h-1, $black);//繪制邊框
}

/*
* 逐位產生隨機字元
*/
for($i=0; $i<$how; $i++)
{
$alpha_or_number = mt_rand(0, 1); //字母還是數字
$str = $alpha_or_number ? $alpha : $number;
$which = mt_rand(0, strlen($str)-1); //取哪個字元
$code = substr($str, $which, 1); //取字元
$j = !$i ? 4 : $j+15; //繪字元位置
$color3 = ImageColorAllocate($im, mt_rand(0,100), mt_rand(0,100), mt_rand(0,100)); //字元隨即顏色
ImageChar($im, $fontsize, $j, 3, $code, $color3); //繪字元
$randcode .= $code; //逐位加入驗證碼字元串
}

/*
* 添加干擾
*/
for($i=0; $i<5; $i++)//繪背景干擾線
{
$color1 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干擾線顏色
ImageArc($im, mt_rand(-5,$w), mt_rand(-5,$h), mt_rand(20,300), mt_rand(20,200), 55, 44, $color1); //干擾線
}
for($i=0; $i<$how*40; $i++)//繪背景干擾點
{
$color2 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干擾點顏色
ImageSetPixel($im, mt_rand(0,$w), mt_rand(0,$h), $color2); //干擾點
}

//把驗證碼字元串寫入session
//session_start();
//$_SESSION['randcode'] = $randcode;
//把驗證碼字元寫入COOKIE
setcookie( "randcode", $randcode, (time() + 3600*24*30), "/" );
/*繪圖結束*/
Imagegif($im);
ImageDestroy($im);
/*繪圖結束*/
?>

閱讀全文

與php模擬登錄驗證碼識別相關的資料

熱點內容
手機壓縮文件怎麼壓縮到十兆以下 瀏覽:985
雲主機雲伺服器品牌 瀏覽:343
安卓emulated文件夾如何打開 瀏覽:311
採用fifo頁面置換演算法是 瀏覽:192
如何上網代理伺服器 瀏覽:591
Hro系統源碼 瀏覽:845
寶庫源碼 瀏覽:340
路飛和熊排解壓力 瀏覽:623
php定時更新 瀏覽:355
數控5軸編程培訓一般多久 瀏覽:558
cadpdf圖層 瀏覽:248
用登號器出現伺服器未響應是什麼 瀏覽:903
java演算法是什麼 瀏覽:634
程序員cc發展方向 瀏覽:987
智慧黑板在哪裡下載app 瀏覽:311
男生穿衣搭配app哪個好 瀏覽:596
光大信用卡年費在app哪裡可以看 瀏覽:211
如何在找機平台下載app 瀏覽:395
西安php工作好找嗎 瀏覽:927
outlook命令 瀏覽:229