php教程 CURL實現帶有驗證碼網站的類比登入的方法

來源:互聯網
上載者:User

標籤:驗證碼   圖片   php教程   程式   網站   

  網上的很多類比登入程式,大都是通過服務程式apache之類的運行,擷取到驗證碼之後顯示在網頁上,然後填上再POST出去

  本文提供了一個程式執行個體,思路就是擷取到驗證碼之後把驗證碼儲存為一個圖片,然後程式休眠20秒,在20秒之後由使用者手動查看圖片,並把驗證碼填寫到code.txt檔案中,20秒休眠完成後,程式會讀code.txt的驗證碼,這樣再帶著驗證碼進行登入操作。具體代碼如下:

  /**

  * 類比登入

  */

  //初始設定變數

  $cookie_file = "tmp.cookie";

  $login_url = "http://xxx.com/logon.php";

  $verify_code_url = "http://xxx.com/verifyCode.php";

  echo "正在擷取COOKIE...\n";

  $curlj = curl_init();

  $timeout = 5;

  curl_setopt($curl, CURLOPT_URL, $login_url);

  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

  curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);

  curl_setopt($curl,CURLOPT_COOKIEJAR,$cookie_file); //擷取COOKIE並儲存

  $contents = curl_exec($curl);

  curl_close($curl);

  echo "COOKIE擷取完成,正在取驗證碼...\n";

  //取出驗證碼

  $curl = curl_init();

  curl_setopt($curl, CURLOPT_URL, $verify_code_url);

  curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);

  curl_setopt($curl, CURLOPT_HEADER, 0);

  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

  $img = curl_exec($curl);

  curl_close($curl);

  $fp = fopen("verifyCode.jpg","w");

  fwrite($fp,$img);

  fclose($fp);

  echo "驗證碼取出完成,正在休眠,20秒內請把驗證碼填入code.txt並儲存\n";

  //停止運行20秒

  sleep(20);

  echo "休眠完成,開始取驗證碼...\n";

  $code = file_get_contents("code.txt");

  echo "驗證碼成功取出:$code\n";

  echo "正在準備類比登入...\n";

  $post = "username=maben&pwd=hahahaha&verifycode=$code";

  $curl = curl_init();

  curl_setopt($curl, CURLOPT_URL, $url);

  curl_setopt($curl, CURLOPT_HEADER, false);

  curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);

  curl_setopt($curl, CURLOPT_POSTFIELDS, $post);

  curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);

  $result=curl_exec($curl);

  curl_close($curl);

  //這一塊根據自己抓包擷取到的網站上的資料來做判斷

  if(substr_count($result,"登入成功")){

  echo "登入成功\n";

  }else{

  echo "登入失敗\n";

  exit;

  }

  //OK,開始做你想做的事吧。。。。。



php教程 CURL實現帶有驗證碼網站的類比登入的方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.