亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 cURL 中發送 post 請求以獲取 cookie 在一個網絡托管上有效

在 cURL 中發送 post 請求以獲取 cookie 在一個網絡托管上有效

PHP
料青山看我應如是 2021-10-22 14:17:45
所以我有hostgator來主持domain.com和hostinger來主持test.com。在這些網站中,我運行著完全相同的腳本。該腳本的作用是,它登錄到外部網站example.com,獲取登錄 cookie 并存儲它。這個餅干可以用幾個月!然后轉到example.com/need-to-be-logged-in-to-view-this-page并獲取其內容。但是,我面臨一個問題。我在兩家托管公司上都有完全相同的代碼。它在hostgator上完美運行。但是,在托管商上,它登錄并獲取 cookie,但 cookie 僅在登錄時起作用一次。然后我在 hostgator 上生成了 cookie 并將該 cookie 復制到托管商,它運行良好。所以我想知道,cURL 中是否有某種設置或主機可能已啟用而主機可能未啟用的某些默認設置,這使得主機上生成的 cookie 僅在登錄時持續那一秒鐘。function get_login_cookie($ch, $headerLine) {    if (strncmp($headerLine, "set-cookie: coolCookie=", 20) == 0) {        $endPos = strpos($headerLine, ";");        $coolCookie = substr($headerLine, 20, ($endPos - 20));        file_put_contents("cookie.txt", $coolCookie);    }    return strlen($headerLine);}function login($username, $password) {    $fields = [        "username"      => $username,        "password"      => $password    ];    $fields_string = http_build_query($fields);    $ch = curl_init("https://example.com/login");    curl_setopt($ch, CURLOPT_HEADERFUNCTION, "get_login_cookie");    curl_setopt($ch,CURLOPT_POST, count($fields));    curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);    curl_exec($ch);}所以我嘗試$headerLiner從get_login_cookie()函數打印。它們非常不同。Hostinger 和 hostgator 如何使用完全相同的代碼沒有相同的響應。當我打印出來時在主機上 $headerLinerHTTP/2 201 server: nginx/1.15.6date: Sun, 21 Jul 2019 23:59:04 GMTcontent-type: application/json; charset=UTF-8content-length: 479set-cookie: coolCookie=THIS_IS_THE_COOKIE; Domain=.example.com; Path=/; Expires=Sun, 28-Jul-19 23:59:04 UTC; HttpOnlyexpires: Thu, 19 Nov 1981 08:52:00 GMTcache-control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0pragma: no-cachevary: Accept,Cookie,Authorization,X-EXAMPLE-Saucelocation: https://api.example.com/login/8gybiuf8gybundfguino
查看完整描述

1 回答

?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

問題是 API 返回了400錯誤代碼。這可能是由于服務器之間 curl 用戶代理的差異(導致 API 阻止請求)。

 curl_setopt($ch, CURLOPT_HTTPHEADER, ['User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36']



查看完整回答
反對 回復 2021-10-22
  • 1 回答
  • 0 關注
  • 261 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號