簡體   English   中英

使用cURL將cookie傳遞到網站

[英]Passing a cookie using cURL to a website

我需要使用PHP中的cURL進行請求的某些網站包含一個驗證碼,可以通過設置cookie“ downloadcaptcha = 1”將其禁用。 現在,如何通過cURL請求將該Cookie傳遞到網站? 在您將其標記為重復之前,我已經進行了研究,並開始使用Cookie jar文件。 我從來沒有做過這樣的事情,也找不到任何對新手友好的文檔。

設置cookie的JS等效代碼,取自禁用驗證碼的網站功能:

var exdate=new Date();
var exdays = 1;
var c_name = "downloadcaptcha";
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(1) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value+";path=/";
window.location.reload();

我不想讓它在1天后過期。 感謝幫助。

這是輸出。 沒有提及Cookie

請求標頭缺少Cookie:

Host: www.emuparadise.me
Accept: */*
Accept-Encoding: deflate, gzip
Referer: https://m.emuparadise.me/

將$ request更改為:

$cookie = '[downloadcaptcha=1'

$request = array();
$request[] = "Host: www.emuparadise.me";
$request[] = "Accept: */*";
$request[] = "Accept-Encoding: deflate, gzip";
$request[] = "Referer: https://m.emuparadise.me/";
$request[] = "Cookie: $cookie";




我已經嘗試過了,但是網站仍然要求提供驗證碼。 看一下我發布的JS代碼。 它取自網站功能以禁用驗證碼

如果我有要測試的URL,我可以為您提供更好的幫助。

如果存在重定向,則必須使用curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

您可能必須使HTTP請求標頭看起來與JS HTTP標頭相同。

您需要查看cURL HTTP請求和響應,並將其與JS HTTP請求和響應進行比較。

要查看JS HTTP請求和響應:

  • 右鍵單擊頁面
  • 選擇檢查(Chrome)或昆蟲元素(FireFox)
  • 選擇“網絡”標簽
  • 轉到包含JS請求的頁面,或者如果已有刷新,則進入頁面。

排除PHP代碼故障:

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_HTTPHEADER, $request);
curl_setopt($ch, CURLOPT_ENCODING,"");

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT,10);
curl_setopt($ch, CURLOPT_FAILONERROR,true);
curl_setopt($ch, CURLOPT_ENCODING,"");

curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_HEADER, true);


$data = curl_exec($ch);
if (curl_errno($ch)){
    $data .= 'Retreive Base Page Error: ' . curl_error($ch);
}
else {
  $info = rawurldecode(var_export(curl_getinfo($ch),true));

  $skip = intval(curl_getinfo($ch, CURLINFO_HEADER_SIZE)); 
  $responseHeader= substr($data,0,$skip);
  $response = substr($data,$skip);
   var_export($info);
  echo "----------------------------------\n$responseHeader\n--------------------------\n$response \n------------------------------------\n";

}


原始帖子

curl_setopt($ch, CURLOPT_COOKIE, $cookie );

單曲奇

$cookie = 'CookieName=CookieValue' 

多個Cookie以分號分隔。 最后一個Cookie之后沒有分號。

$cookie = 'CookieName=CookieValue; CookieName=CookieValue' 

curl_setopt($ch, CURLOPT_COOKIE, $cookie );


也可以使用CURLOPT_HTTPHEADER設置Cookie
請參見以下示例的最后一行。

curl_setopt($ch, CURLOPT_HTTPHEADER, $request);

$request = array();
$request[] = "Host: www.example.com";
$request[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
$request[] = "User-Agent: MOT-V9mm/00.62 UP.Browser/6.2.3.4.c.1.123 (GUI) MMP/2.0";
$request[] = "Accept-Language: en-US,en;q=0.5";
$request[] = "Connection: keep-alive";
$request[] = "Cache-Control: no-cache";
$request[] = "Pragma: no-cache";
$request[] = "Cookie: $cookie";

暫無
暫無

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

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