我正在尝试通过cURL登录网站,并让它返回到我的实际页面。到目前为止,我只能使用反馈链接和此错误来获取页面的页脚:



第18行是“);”在curl数组的末尾

到目前为止,我已经能够弄清楚,如果我只是从浏览器中在URL中输入带有access_token的网站名称,那么我将自动登录,因此我尝试使用cURL来模拟。

<?php
$ckfile ='  __utma=173730677.1410450142.1370837396.1370843059.4; __utmz=173730677.1370843059.4.3.utmcsr=web.com|utmccn=(referral)|utmcmd=referral|utmcct=/ou; __utma=64278953.892306882.1370766510.1370838026.4; __utmz=64278953.4.3.utmcsr=.com|utmccn=(referral)|utmcmd=referral|utmcct=/signin; __utmc=64278953; __utmc=173730677; __utmb=173730677.5.10.1370843059; __utmb=64278953.1.10';

$ch = curl_init();
curl_setopt_array(
    $ch,
    array(
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_URL => 'https://web.com',
    CURLOPT_COOKIEFILE=> $ckfile,
    CURLOPT_USERAGENT =>'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0',
    CURLOPT_GET=> true,
    CURLOPT_REFERER => 'https://.com/signin',
    CURLOPT_GETFIELDS=>'#access_token=',
    CURLOPT_RETURNTRANSFER => true
    )
);

$response = curl_exec($ch);
curl_close($ch);

echo '<pre>';
print_r($response);
?>

最佳答案

CURLOPT_GETCURLOPT_GETFIELDS不是cURL的有效选项。这些选项可能存在于POST,但不存在于GET。只需将查询字符串添加到URL中即可。

另外,请确保将所有选项设置为cURL期望将其设置为的内容。 CURLOPT_COOKIEFILE应该设置为文件名,而不是Cookie值的字符串。您需要CURLOPT_COOKIE

curl_setopt_array($ch, array(
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_URL => 'https://web.com?access_token=abc',
    CURLOPT_COOKIE=> $ckfile,
    CURLOPT_USERAGENT =>'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0',
    CURLOPT_REFERER => 'https://web.com/signin',
    CURLOPT_RETURNTRANSFER => true
));

请参阅PHP cURL文档以获取所有选项:http://php.net/manual/en/function.curl-setopt.php

10-01 17:12
查看更多