簡體   English   中英

使用PHP Curl中的瀏覽器cookie登錄網站

[英]Use Browser cookies in PHP Curl to log-in to a website

我正在嘗試從網站上獲取一些數據,該數據僅適用於已簽名的用戶,但是我無法使用CURL進行登錄,因為它使用了CAPTCHA,所以我正在嘗試使用生成的Cookie我在瀏覽器上進行了注冊,以允許CURL訪問僅允許已簽名用戶使用的頁面。

假設我已將使用瀏覽器登錄時該網站生成的所有cookie復制到cookie.txt文件中。 我有兩個問題:

我應該以哪種格式將cookie存儲在cookie.txt中?

如何加載這些Cookie以供CURL使用?

 $curl = curl_init();

 //load cookies from cookie.txt code

 curl_setopt($curl,CURLOPT_URL,$url); 
 curl_setopt($curl,CURLOPT_RETURNTRANSFER,TRUE);
 curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,10); 
 curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($curl, CURLOPT_USERAGENT, $userAgent); 
 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
 curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE);
 curl_setopt($curl, CURLOPT_TIMEOUT, 10); 

 $contents = curl_exec($curl);
 curl_close($curl);
 echo $contents;

編輯1

 $url="https://google.com";
 $curl = curl_init();
 curl_setopt($curl, CURLOPT_COOKIEJAR, '/Testing/cookie.txt'); 
 curl_setopt($curl,CURLOPT_URL,$url); 
 curl_setopt($curl,CURLOPT_RETURNTRANSFER,TRUE);
 curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,10); 
 curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($curl, CURLOPT_USERAGENT, $userAgent); /
 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE); 
 curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE); 
 curl_setopt($curl, CURLOPT_TIMEOUT, 10);   


 $contents = curl_exec($curl);
 curl_close($curl);
 echo  $contents;

嘗試了以上代碼以獲取Cookie文件的示例,但cookie.txt似乎保持空白。

編輯2

我將'/Testing/cookie.txt'的路徑更改為__DIR__."/cookie.txt"並在文件中生成了cookie,我將嘗試對其進行修改並使用COOKIEFILE,看看它是否可以工作。

編輯3

遵循以下提供的答案,並且按預期方式工作。

嘗試添加用於保存Cookie的選項:

curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookies.txt');
curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookies.txt');

驗證Cookie文件的格式:您可以設置

curl_setopt($ch, CURLOPT_COOKIEJAR, "path_to_the_cookie_file")

接下來,向任何設置cookie的網站運行CURL請求,然后檢查設置的cookie文件的格式。

發送Cookie:然后,使用所需的Cookie構建Cookie文件並使用設置

curl_setopt($ch, CURLOPT_COOKIEFILE, "path_to_the_cookie_file")

使您的CURL請求發送cookie。

編輯#1:從正式的PHP文檔( http://php.net/manual/en/function.curl-setopt.php ):

cookie文件可以是Netscape格式,也可以是純HTTP樣式的標頭轉儲到文件中。

編輯#2:這是CURL( source )生成的cookie文件的示例:

# Netscape HTTP Cookie File
# This file was generated by libcurl! Edit at your own risk.
.auto.com   TRUE    /   FALSE   1452087781  ___suid 2ecfe4287cbeacd8399eaf98bec9ce0b.59089b9d033bc7c6dce8ea2fca139920
.auto.com   TRUE    /   FALSE   1452865380  all7_user_region_confirmed  1
.auto.com   TRUE    /   FALSE   1452865380  geo_location    a%3A3%3A%7Bs%3A7%3A%22city_id%22%3Ba%3A0%3A%7B%7Ds%3A9%3A%22region_id%22%3Ba%3A1%3A%7Bi%3A0%3Bi%3A89%3B%7Ds%3A10%3A%22country_id%22%3Ba%3A0%3A%7B%7D%7D
.auto.com   TRUE    /   FALSE   1423921380  autoru_sid  ee094d60fa32eada_daf2da69dc79a59b7c8702a29554abbc
.auth.auto.com  TRUE    /   FALSE   1421329026  autoru_sid  
.auth.auto.com  TRUE    /   FALSE   1421329026  autoru_sid_key  
.auto.com   TRUE    /   FALSE   1421329026  cc6882cb6b6f0c912cf9589734fcc1e6    
.auto.com   TRUE    /   FALSE   1452865027  user_name   igor.savinkin5%40gmail.com
.auto.com   TRUE    /   FALSE   1452865027  username   igor.savinkin5%40gmail.com

編輯#3:我的cookies.txt文件中所有這些條目是什么? http://www.cookiecentral.com/faq/#3.5

從左到右,這是每個字段代表的內容:

域-創建AND且可以讀取變量的域。

flag-一個TRUE / FALSE值,指示給定域內的所有計算機是否可以訪問該變量。 該值由瀏覽器自動設置,具體取決於您為域設置的值。

path-變量在其域內有效的路徑。

安全-一個TRUE / FALSE值,指示是否需要與域的安全連接才能訪問該變量。

expiration-變量到期的UNIX時間。 UNIX時間定義為自格林尼治標准時間1970年1月1日00:00:00起經過的秒數。

name-變量的名稱。

value-變量的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM