PHP CURL獲取cookies模擬登入的方法

2021-09-20 22:01:29 字數 2224 閱讀 8483

要提取google搜尋的部分資料,發現google對於軟體抓取它的資料遮蔽的厲害,以前偽造下 user-agent 就可以抓資料,但是現在卻不行了。利用抓包資料發現,google 判斷了 cookies,當你沒有cookies的時候,直接返回 302 跳轉,而且是連續幾十個302跳轉,根本抓不了資料。

因此,在傳送搜尋命令時,需要先提取 cookies 並儲存,然後利用儲存下來的這個cookies再次傳送搜尋命令即可正常抓資料了。這其實和論壇的模擬登入乙個道理,先post登入,獲取cookies並儲存,然後利用這個cookies訪問就可以了。

php **如下:

$login_url = '***';  

$post_fields['email'] = '***x';  

$post_fields['password'] = '***x';  

$post_fields['origurl'] = '***';  

$post_fields['domain'] = '***.com';  

//cookie檔案存放在**根目錄的temp資料夾下  

$cookie_file = tempnam('./temp','cookie');  

$ch = curl_init($login_url);  

curl_setopt($ch, curlopt_useragent, 'mozilla/5.0 (windows; u; windows nt 5.1; zh-cn; rv:1.9.1.5) gecko/20091102 firefox/3.5.5');  

curl_setopt($ch, curlopt_header, 0);  

curl_setopt($ch, curlopt_returntransfer, 1);  

curl_setopt($ch, curlopt_maxredirs, 1);  

curl_setopt($ch, curlopt_followlocation, 1);  

curl_setopt($ch, curlopt_autoreferer, 1);  

curl_setopt($ch, curlopt_post, 1);  

curl_setopt($ch, curlopt_postfields, $post_fields);  

curl_setopt($ch, curlopt_cookiejar, $cookie_file);  

curl_exec($ch);  

curl_close($ch);  

//帶上cookie檔案,訪問需要訪問的頁面  

$send_url='***.com';  

$ch = curl_init($send_url);  

curl_setopt($ch, curlopt_header, 0);  

curl_setopt($ch, curlopt_returntransfer, 1);  

curl_setopt($ch, curlopt_cookiefile, $cookie_file);  

$contents = curl_exec($ch);  

curl_close($ch);  

//清理cookie檔案  

unlink($cookie_file);  

//輸出網頁內容  

print_r($contents);

在temp資料夾下儲存乙個cookie字首的臨時檔案,例如:coo3a98.tmp檔案

開啟這個檔案得到如下**:

要使用php來格式化該檔案,使用以下**就能實現

<?php   

$cookie_folder = dirname(__file__)."/temp";  

$lines = file($cookie_folder.'/coo3a98.tmp');  

$trows = '';  

foreach($lines as $line)  

}  echo ''.php_eol.''.php_eol.$trows.''.php_eol.'';  

?>

執行之後就如下圖所示,已經被寫入到table當中

大功告成,如果只讀取其中欄位可自行修改即可。

PHP CURL庫的cookie設定

cookie是什麼?php中的curl php的curl庫中可以設定記錄和讀取cookie。有三個選項可以設定cookie curlopt cookie 在http頭中設定cookie的資訊 curlopt cookiejar 收到的http responce中set cookie的存放路徑 cur...

刪除cookie 獲取cookie

method getcookie 獲取指定name的cookie值 param 需要獲取的cookie的name值 return 如果該cookie存在就返回cookie值,不存在就返回空 gcookieapi.prototype.getcookie function name return dec...

PHP CURL模擬登入 獲取資料

使用了curl 模擬登入 測試了公司 記錄下來 模擬登入方法 function login post url,cookie,post 登入成功後獲取資料 function get content url,cookie tempnam 函式建立乙個具有唯一檔名的臨時檔案。cookie tempnam ...