網站類比登陸備忘(php + python)

來源:互聯網
上載者:User

 php版:

 

<?php<br />$cookie_file = fopen('cookie.txt','w');//dirname(__FILE__)."/cookie_".md5(basename(__FILE__)).".txt"; // 設定Cookie檔案儲存路徑及檔案名稱 </p><p>function vlogin($url,$data){ // 類比登入擷取Cookie函數<br /> $curl = curl_init(); // 啟動一個CURL會話<br /> curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址<br /> curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對認證認證來源的檢查<br /> curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 從認證中檢查SSL密碼編譯演算法是否存在<br /> curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 類比使用者使用的瀏覽器<br /> curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動跳轉<br /> curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動化佈建Referer<br /> curl_setopt($curl, CURLOPT_POST, 1); // 發送一個常規的Post請求<br /> curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的資料包<br /> curl_setopt($curl, CURLOPT_COOKIEJAR, $GLOBALS['cookie_file']); // 存放Cookie資訊的檔案名稱<br /> curl_setopt($curl, CURLOPT_COOKIEFILE, $GLOBALS['cookie_file']); // 讀取上面所儲存的Cookie資訊<br /> curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設定逾時限制防止死迴圈<br /> curl_setopt($curl, CURLOPT_HEADER, 0); // 顯示返回的Header地區內容<br /> curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 擷取的資訊以檔案流的形式返回<br /> $tmpInfo = curl_exec($curl); // 執行操作<br /> if (curl_errno($curl)) {<br /> echo 'Errno'.curl_error($curl);<br /> }<br /> curl_close($curl); // 關閉CURL會話<br /> return $tmpInfo; // 返回資料<br />} </p><p>function vget($url){ // 類比擷取內容函數<br /> $curl = curl_init(); // 啟動一個CURL會話<br /> curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址<br /> curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對認證認證來源的檢查<br /> curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 從認證中檢查SSL密碼編譯演算法是否存在<br /> curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 類比使用者使用的瀏覽器<br /> curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動跳轉<br /> curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動化佈建Referer<br /> curl_setopt($curl, CURLOPT_HTTPGET, 1); // 發送一個常規的Post請求<br /> curl_setopt($curl, CURLOPT_COOKIEFILE, $GLOBALS['cookie_file']); // 讀取上面所儲存的Cookie資訊<br /> curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設定逾時限制防止死迴圈<br /> curl_setopt($curl, CURLOPT_HEADER, 0); // 顯示返回的Header地區內容<br /> curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 擷取的資訊以檔案流的形式返回<br /> $tmpInfo = curl_exec($curl); // 執行操作<br /> if (curl_errno($curl)) {<br /> echo 'Errno'.curl_error($curl);<br /> }<br /> curl_close($curl); // 關閉CURL會話<br /> return $tmpInfo; // 返回資料<br />} </p><p>function vpost($url,$data){ // 類比提交資料函數<br /> $curl = curl_init(); // 啟動一個CURL會話<br /> curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址<br /> curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對認證認證來源的檢查<br /> curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 從認證中檢查SSL密碼編譯演算法是否存在<br /> curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 類比使用者使用的瀏覽器<br /> curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動跳轉<br /> curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動化佈建Referer<br /> curl_setopt($curl, CURLOPT_POST, 1); // 發送一個常規的Post請求<br /> curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的資料包<br /> curl_setopt($curl, CURLOPT_COOKIEFILE, $GLOBALS['cookie_file']); // 讀取上面所儲存的Cookie資訊<br /> curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設定逾時限制防止死迴圈<br /> curl_setopt($curl, CURLOPT_HEADER, 0); // 顯示返回的Header地區內容<br /> curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 擷取的資訊以檔案流的形式返回<br /> $tmpInfo = curl_exec($curl); // 執行操作<br /> if (curl_errno($curl)) {<br /> echo 'Errno'.curl_error($curl);<br /> }<br /> curl_close($curl); // 關鍵CURL會話<br /> return $tmpInfo; // 返回資料<br />} </p><p>function delcookie($cookie_file){ // 刪除Cookie函數<br /> @unlink($cookie_file); // 執行刪除<br />} </p><p>// 使用執行個體<br />if(!file_exists($cookie_file)) { // 檢測Cookie是否存在<br />vlogin('http://example.com/login_do.asp','id=xxx&password=xxx'); // 登入擷取Cookie<br />}<br />echo vget('http://example.com/upload_new.asp');<br />delcookie($cookie_file);<br />?><br /> 

 

python版(1):使用urllib和cookielib

 

import urllib<br />import urllib2<br />import cookielib<br />def xxxFunc():<br /> """</p><p> """<br /> ck = cookielib.LWPCookieJar()<br /> opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(ck))<br /> opener.addheaders = [('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 528; POTU(RR:28031409:0:5491841); Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30)')]<br /> opener.addheaders = [('Accept', '*/*')]<br /> opener.addheaders = [('Accept-Language', 'zh-cn')]<br /> opener.addheaders = [('Accept-Encoding', 'gzip, deflate')]<br /> opener.addheaders = [('Connection', 'Keep-Alive')]<br /> opener.addheaders = [('Cache-Control', 'no-cache')]<br /> urllib2.install_opener(opener)<br /> url_login = 'http://xxx.net/login'<br /> body = (('id','xxx'), ('pw','xxx'))<br /> req = urllib.urlopen(url_login,urllib.urlencode(body))<br /> req = urllib2.urlopen('http://xxx.net/post') 

 

python版(2):使用ClientCookie

 

import ClientCookie<br />request = ClientCookie.Request("https://example.com/?login&username=xxx&password=xxx")<br />response = ClientCookie.urlopen(request)<br />request2 = ClientCookie.Request("http://example.com/xxx")<br />response2 = ClientCookie.urlopen(request2)<br />print response2.read()<br /> 

 

 

上述的方法對於一般的網站都能夠類比登陸,達到預期的目的,不過我想類比登陸的網站很遺憾沒能成功,cookie儲存不下來。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.