2014-03-05 30 views
0

我打开一个页面作为登录用户,它似乎工作,除了网站有某种保护系统。如果我通常这样做,我会得到我想要的页面,但如果我用cURL来做,我会得到'Welcome back user(userid)'和一个链接到我请求的页面。一旦我点击链接,我就会得到我想要的位置。现在我尝试伪造引用者并检查发送到页面的数据,这里没有什么特别的。当我点击链接时,我只是简单地重定向到我想要的页面。我的问题是,为什么没有这个代码让我有作为:作为登录用户失败的cURL/PHP开放

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL , "http://www.site.com/sell/index"); 
curl_setopt($ch, CURLOPT_REFERER, 'http://www.site.com'); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13"); 
curl_setopt($ch, CURLOPT_COOKIESESSION, true); 
curl_setopt($ch, CURLOPT_FAILONERROR, false); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_FRESH_CONNECT, false); 
curl_setopt($ch, CURLOPT_POST, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); 
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); 
$response = curl_exec($ch); 
curl_close($ch); 
echo $response; 

我这样做只是之前,我进行登录过程和抢饼干。而且我确实可以以登录用户的身份打开页面,我似乎无法访问它,而无需点击ahref。

PS。如果我登录,打开我想要的页面,关闭浏览器并再次打开它,也会发生同样的情况。所以我认为这与推荐人有关?

+0

是否使用'curl_setopt($ ch,CURLOPT_MAXREDIRS,10);'有什么帮助? – Quixrick

+0

@Quixrick nope我得到了同样的结果。该网站知道我已登录,但似乎知道我也在使用cURL。如果它有所不同,则Cookie文件在其中包含多个Cookie。 –

+0

嗯,那我不知道。除此之外,我能想到的是将浏览器访问的头文件与cURL访问头文件进行比较。听起来像你可能已经这样做了,但。 – Quixrick

回答

1

cookie-jar意味着它会保存你的cookie从curl的响应。这就是为什么它不适合你。相反,使用的cookie文件,使您的卷曲发送存储的cookie要求:

curl_setopt($ch, CURLOPT_COOKEFILE, "cookie.txt"); 

此外,而不是使用相对路径绝对路径(/var/tmp/cookie.txt)。

现在,快乐!

+0

谢谢!但我很高兴,但这并没有解决问题。该网站仍然知道我使用卷曲并迫使我点击'href',这实质上会重新加载页面以达到我想要的=) –

+0

@SamFisher检查其他http标题。可能是浏览器发送了诸如'x-http-header'之类的头文件,这会为ajax调用生成。 –

+0

我会确保我这样做,有没有更好的方法来检查究竟需要什么卷曲,或者我用浏览器挖掘并试图捕捉它? –

相关问题