国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php CURL帶有驗證碼驗證登錄的例子

2024-05-04 21:49:35
字體:
來源:轉載
供稿:網友

以前我們寫過很多利用curl模擬登錄的,今天我來介紹兩個例子都可以實現對方網站有驗證碼圖片時由用戶輸入驗證碼之后再驗證.

例子,讀取遠程的驗證碼利用框架加載到此頁面然后手工輸入,代碼如下:

  1. <?php 
  2. /** 
  3.  * @author 追逐__something 
  4.  * @version $id 
  5.  */ 
  6. define('SCRIPT_ROOT',dirname(__FILE__).'/'); 
  7. $act = trim($_REQUEST['act']); 
  8. switch($act
  9.     case 'login'
  10.         // 獲取驗證碼 
  11.         $code = trim($_REQUEST['code']); 
  12.          
  13.         // $loginParams為curl模擬登錄時post的參數 
  14.         $loginParams['act'] = 'login'
  15.         $loginParams['password'] = '111111'
  16.         $loginParams['username'] = 'wlpadmin'
  17.         $loginParams['vcode'] = $code
  18.          
  19.         // $cookieFile 為加載驗證碼時保存的cookie文件名  
  20.         $cookieFile = SCRIPT_ROOT.'cookie.tmp'
  21.          
  22.         // $targetUrl curl 提交的目標地址 m.survivalescaperooms.com 
  23.         $targetUrl = 'http://local.xx.com/admin/login.php'
  24.          
  25.         // 參數重置 
  26.         $content = curlLogin($targetUrl$cookieFile$loginParams); 
  27.         echo $content
  28.     break
  29.     case 'authcode'
  30.         // Content-Type 驗證碼的圖片類型 
  31.         header('Content-Type:image/png'); 
  32.         showAuthcode('http://local.xx.com/admin/vcode.php?r=0.03192671708666017'); 
  33.         exit
  34.     break
  35.  
  36. /** 
  37.  * 模擬登錄 
  38.  * @param string $url 提交到的地址 
  39.  * @param string $cookieFile 保存cookie的文件 
  40.  * @param string $loginParams 提交時要post的參數 
  41.  * @return string $content 返回的內容 
  42.  */ 
  43. function curlLogin($url$cookieFile$loginParams
  44.     $ch = curl_init($url); 
  45.     curl_setopt($ch,CURLOPT_COOKIEFILE, $cookieFile); //同時發送Cookie 
  46.     curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); 
  47.     curl_setopt($ch,CURLOPT_POST, 1); 
  48.     curl_setopt($ch,CURLOPT_POSTFIELDS, $loginParams); //提交查詢信息 
  49.     $content = curl_exec($ch); 
  50.     curl_close($ch); 
  51.     return $content
  52.  
  53. /** 
  54.  * 加載目標網站圖片驗證碼 
  55.  * @param string $authcode_url 目標網站驗證碼地址 
  56.  */ 
  57. function showAuthcode( $authcode_url ) 
  58.     $cookieFile = SCRIPT_ROOT.'cookie.tmp'
  59.     $ch = curl_init($authcode_url); 
  60.     curl_setopt($ch,CURLOPT_COOKIEJAR, $cookieFile); // 把返回來的cookie信息保存在文件中 
  61.     curl_exec($ch); 
  62.     curl_close($ch); 
  63. ?> 
  64. <iframe src="?act=authcode" style='width: 100px; height:40px ' frameborder=0 ></iframe> 
  65. <form> 
  66. <input type="hidden" name="act" value="login"
  67. <input type="text" name="code" /> 
  68. <input type="submit" name="submit" > 
  69. </form> 

例子:思路就是獲取到驗證碼之后把驗證碼存儲為一個圖片,然后程序休眠20秒,在20秒之后由用戶手動查看圖片,并把驗證碼填寫到code.txt文件中,20秒休眠完成后,程序會讀code.txt的驗證碼,這樣再帶著驗證碼進行登錄操作,代碼如下:

  1. //初始化變量 
  2. $cookie_file = "tmp.cookie"
  3. $login_url = "http://xxx.com/logon.php"
  4. $verify_code_url = "http://xxx.com/verifyCode.php"
  5.  
  6. echo "正在獲取COOKIE...n"
  7. $curlj = curl_init(); 
  8. $timeout = 5; 
  9. curl_setopt($curl, CURLOPT_URL, $login_url); 
  10. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
  11. curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout); 
  12. curl_setopt($curl,CURLOPT_COOKIEJAR,$cookie_file); //獲取COOKIE并存儲 
  13. $contents = curl_exec($curl); 
  14. curl_close($curl); 
  15.  
  16. echo "COOKIE獲取完成,正在取驗證碼...n"
  17. //取出驗證碼 m.survivalescaperooms.com 
  18. $curl = curl_init(); 
  19. curl_setopt($curl, CURLOPT_URL, $verify_code_url); 
  20. curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file); 
  21. curl_setopt($curl, CURLOPT_HEADER, 0); 
  22. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
  23. $img = curl_exec($curl); 
  24. curl_close($curl); 
  25.  
  26. $fp = fopen("verifyCode.jpg","w"); 
  27. fwrite($fp,$img); 
  28. fclose($fp); 
  29. echo "驗證碼取出完成,正在休眠,20秒內請把驗證碼填入code.txt并保存n"
  30. //停止運行20秒 
  31. sleep(20); 
  32.  
  33. echo "休眠完成,開始取驗證碼...n"
  34. $code = file_get_contents("code.txt"); 
  35. echo "驗證碼成功取出:$coden"
  36. echo "正在準備模擬登錄...n"
  37.  
  38. $post = "username=maben&pwd=hahahaha&verifycode=$code"
  39. $curl = curl_init(); 
  40. curl_setopt($curl, CURLOPT_URL, $url); 
  41. curl_setopt($curl, CURLOPT_HEADER, false); 
  42. curl_setopt($curl, CURLOPT_RETURNTRANSFER,1); 
  43. curl_setopt($curl, CURLOPT_POSTFIELDS, $post); 
  44. curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file); 
  45. $result=curl_exec($curl); 
  46. curl_close($curl); 
  47.  
  48. //這一塊根據自己抓包獲取到的網站上的數據來做判斷 
  49. if(substr_count($result,"登錄成功")){ 
  50.  echo "登錄成功n"
  51. }else
  52.  echo "登錄失敗n"
  53.  exit
  54. }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳新县| 普陀区| 昭苏县| 林口县| 湖口县| 宁国市| 凯里市| 安乡县| 顺平县| 大竹县| 漠河县| 章丘市| 志丹县| 嘉荫县| 阿城市| 霍林郭勒市| 微山县| 曲水县| 高雄县| 临夏市| 辉南县| 葵青区| 彰化县| 北川| 柳州市| 桃源县| 宁德市| 长海县| 多伦县| 红河县| 亳州市| 长阳| 讷河市| 宁阳县| 四川省| 深水埗区| 苏尼特左旗| 罗江县| 郯城县| 台南县| 鹤峰县|