我遇到了問題。 我想用CURL登錄網站,但頁面會生成一個密鑰,該密鑰位於隱藏字段中。所以我必須抓住隱藏領域的價值...之後,我必須提交密碼,電子郵件和抓取密鑰。CURL抓取信息並用它登錄
這可能嗎?
希望你明白
感謝
---- ----編輯如果 的頁面重載,有一個在隱藏字段..和老的一個新的密鑰不工作
我遇到了問題。 我想用CURL登錄網站,但頁面會生成一個密鑰,該密鑰位於隱藏字段中。所以我必須抓住隱藏領域的價值...之後,我必須提交密碼,電子郵件和抓取密鑰。CURL抓取信息並用它登錄
這可能嗎?
希望你明白
感謝
---- ----編輯如果 的頁面重載,有一個在隱藏字段..和老的一個新的密鑰不工作
是的。
$contents = file_get_contents(...);
)。$matches = preg_match(..., ...); $key = $matches[1];
)。$context = streamcontextcreate(...); $data = file_get_contents(..., false, $context);
)。是的,這是可能的。基本步驟是:
1. Fetch form
2. Run returned data through DOMdocument to extract the hidden form field's value
3. Post login data, including the key value from step #2
4. ???
5. Profit
是的,這是可能的。
你甚至可以
$源抓取頁面=用htmlspecialchars(的file_get_contents($網址));
然後用strpos,substr等獲得(這是最簡單的方法)
然後,只需使用此功能張貼
$ urltopost = $網址
該字段的信息$ datatopost = array($ name => $ value);
$ ch = curl_init($ urltopost);
curl_setopt($ ch,CURLOPT_POST,true);
curl_setopt($ ch,CURLOPT_POSTFIELDS,$ datatopost);
curl_setopt($ ch,CURLOPT_RETURNTRANSFER,true);
$ returndata = htmlspecialchars(curl_exec($ ch));
爲什麼'htmlspecialchars()'?當OP僅需從表單中提取單個值時完全沒有必要。頁面數據不會在任何地方重新顯示。 –
嗯,我總是使用它,因爲那時我無法立刻用立陶宛字母做記號。 – aemdy
在這種情況下應該使用mb_strpos(),它可以識別多個字節並使用UTF字符串。 –
在http頭文件中必須有東西來告訴密鑰是否是有效的/過期的,也許你試圖調查它,一旦你有正確的頭部,你可以在手動抓取密鑰或解析後發送請求curl的HTML結果。 – w00d