所以我使用cURL登录这里的网站,并欺骗用户代理。我有两个常量:一个名为IOS
,一个是iOS用户代理,一个名为CHROME
,是一个Chrome用户代理。这是登录的代码:
public function signIn($username, $password)
{
$url = "https://www.site.net/post/Index.page";
$cookie = "cookie.txt";
$postdata = "screenName=$username&kclq=$password&submitEvent=1&TCNK=authenticationEntryComponent&enterClicked=true&ajaxSupported=yes";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_USERAGENT, IOS);
curl_setopt($ch, CURLOPT_TIMEOUT, 200);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIE, 1);
curl_setopt($ch, CURLOPT_COOKIESESSION, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_REFERER, "https://www.site.net/Index.page");
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_POST, 1);
$result = curl_exec($ch);
curl_close($ch);
}
在后续请求中,我想将用户代理从IOS
更改为CHROME
,但它似乎无法正常工作(我更改为CHROME
和网站仍然提供移动页面)。当我运行此请求时:
curl -L -X POST -b "cookie.txt" --user-agent " . CHROME . " https://site.net
它不提供桌面网站,而是提供移动桌面网站。是否可以在登录时更改用户代理?
答案 0 :(得分:1)
服务器也会根据cookie检测您的访问。因此,在函数signIn()
内的第一行,要么清空cookie文件,要么删除它。
例如:
file_put_contents($cookie, "");
或删除它,curl将创建一个新的:
unlink($cookie);
答案 1 :(得分:0)
网站似乎在登录时将用户代理保存为全局会话变量。在这种情况下,不会,在以后的curl请求中更改用户代理不会更改会话变量中的用户代理。