php curl模擬登入抓取頁面資訊

2021-08-01 09:26:15 字數 3533 閱讀 5801

在本專案中,使用php抓取四川大學綜合教務**的成績資訊、課程資訊以及登入使用者的基本資料,解析資料並存入資料庫,以實現對所得資訊的進一步分析,並呈現給使用者。

本文主要記錄了使用curl模擬登入,獲取cookie1並進行資料抓取的過程。

初始化乙個curl控制代碼

resource curl_init ([ string $url = null ] )設定curl選項

bool curl_setopt ( resource $ch , int $option , mixed $value )執行curl請求

mixed curl_exec ( resource $ch )釋放curl資源

void curl_close ( resource $ch )

1. 初始化curl控制代碼

初始化新的會話,返回curl控制代碼,用於接下來的三個步驟:curl_setopt、curl_exec、curl_close。

**:

//設定請求所需資訊

$userzjh = "******";

$usermm = "******";

$request = "mm=$usermm&zjh=$userzjh";

$cookie_jar = tempnam('./tmp','cookie'); //設定cookie檔案的儲存位置

$curl = curl_init(); //初始化,獲得curl控制代碼

2.設定curl選項

使用curl_setopt函式設定curl的相應傳輸選項。

此函式中包含三個引數:resource $ch , int $option , mixed $value

第乙個引數為步驟一中初始化所得的curl控制代碼,第二個引數所要設定的選項,第三個引數為選項的值。

curl部分選項與可選值對應表如下:

option選項

說明value值

curlopt_url

url位址

curlopt_post

設定使用post方式傳送資料

true/false

curlopt_postfields

傳送post傳輸所需資料(內容格式可通過抓包工具或瀏覽器開發者工具獲得)

內容curlopt_cookiejar

將cookie資訊儲存到檔案中

儲存檔案位址

curlopt_returntransfer

將curl_exec()獲取的資訊以檔案流的形式返回,而不是直接輸出

true/false

curlopt_header

啟用時會將標頭檔案的資訊作為資料流輸出,標頭檔案資訊中包含是否登入成功、重定向**等資訊

true/false

curlopt_cookiefile

傳遞乙個包含cookie資料的檔名的字串

檔名

**:

curl_setopt($curl,curlopt_url,''); //要抓取的頁面url

curl_setopt($curl, curlopt_post, 1); //使用post傳輸資料

curl_setopt($curl, curlopt_postfields, $request); //傳遞資料

curl_setopt($curl, curlopt_cookiejar, $cookie_jar); //把返回來的cookie資訊儲存在$cookie_jar檔案中

curl_setopt($curl, curlopt_returntransfer, 1); //設定返回的資料是否自動顯示

curl_setopt($curl, curlopt_header, false); //設定是否顯示頭資訊

3.執行curl請求

設定所需選項的值後,執行請求,並獲得返回結果。

$result = curl_exec($curl); 

//若設定curlopt_header為true,此處$result中儲存頭資訊

if (curl_errno($curl)) //判斷是否執行成功

4.釋放curl資源

curl_close($curl); //關閉會話
//設定請求所需資訊

$userzjh = "******";

$usermm = "******";

$request = "mm=$usermm&zjh=$userzjh";

$cookie_jar = tempnam('./tmp','cookie'); //設定cookie檔案的儲存位置

$curl = curl_init(); //初始化,獲得curl控制代碼

curl_setopt($curl,curlopt_url,''); //要抓取的頁面url

curl_setopt($curl, curlopt_post, 1); //使用post傳輸資料

curl_setopt($curl, curlopt_postfields, $request); //傳遞資料

curl_setopt($curl, curlopt_cookiejar, $cookie_jar); //把返回來的cookie資訊儲存在$cookie_jar檔案中

curl_setopt($curl, curlopt_returntransfer, 1); //設定返回的資料是否自動顯示

curl_setopt($curl, curlopt_header, false); //設定是否顯示頭資訊

$result = curl_exec($curl);

//若設定curlopt_header為true,此處$result中儲存頭資訊

if (curl_errno($curl)) //判斷是否執行成功

curl_close($curl); //關閉會話

//獲取學籍資訊

$curl4 = curl_init(); //重新建立乙個會話

$url = '';

curl_setopt($curl4,curlopt_url,$url);

curl_setopt($curl4,curlopt_cookiefile,$cookie_jar);

curl_setopt($curl4,curlopt_returntransfer,1);

$content = curl_exec($curl4);

curl_close($curl4);

file_put_contents("./xueji.txt",$content); //將html頁面內容儲存在檔案中,用於後續分析

登入後,可獲得從伺服器傳送來的session id,這個session id 包含在之後每次請求的cookie(客戶端)中,用於讀取伺服器端的對應session,辨別使用者身份。 ↩

PHP curl 模擬使用者登入

fakelogin.php 模擬post提交 url 表單的action處理程式 unset post data post data username name 帳號 post data password pass 密碼 post data type 登入表單的其他域內容.下略 post data ...

PHP CURL模擬登入 獲取資料

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

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

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