2013-08-02 48 views
0

我抓住与小提琴手以下Post请求,我只屏蔽的网址,因为我不想让广告HTTP标头POST请求,卷曲

POST http://xyz.com/dialogs/track HTTP/1.1 
Host: www.xyz.com 
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:10.0) Gecko/20100101 Firefox/10.0 
Accept: application/json, text/javascript, */*; q=0.01 
Accept-Language: de 
Accept-Encoding: gzip, deflate 
DNT: 1 
Content-Type: application/json; charset=utf-8 
X-CSRFToken: uuihXszJrkrXwnCkLKKDNQ8BrPRDqXvU 
X-Requested-With: XMLHttpRequest 
Referer: http://www.xyz.com/referer/ 
Content-Length: 2 
Cookie: csrftoken=uuihXszJrkrXwnCkLKKDNQ8BrPRDqXvU 
Connection: keep-alive 
Pragma: no-cache 
Cache-Control: no-cache 

{} 

我需要一个教程(链接将是有益的),以“假“这个请求与卷曲,我发现了一些谷歌的东西,但没有工作,我收到错误。

CNC中

$headers = array(
'POST http://www.example.com/dialogs/track HTTP/1.1', 
'Host: www.example.com', 
'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:10.0) Gecko/20100101 Firefox/10.0', 
'Accept: application/json, text/javascript, */*; q=0.01', 
'Accept-Language: de', 
'Accept-Encoding: gzip, deflate', 
'DNT: 1', 
'Content-Type: application/json; charset=utf-8', 
'X-CSRFToken: uuihXszJrkrXwnCkLKKDNQ8BrPRDqXvU', 
'X-Requested-With: XMLHttpRequest', 
'Referer: http://www.example.com', 
'Content-Length: 2', 
'Cookie: __cfduid=d0db16cb5c4c58db770a1374f09a61d7d1375100590810; csrftoken=uuihXszJrkrXwnCkLKKDNQ8BrPRDqXvU; __utma=1.2111538523.1375265099.1375427020.1375431064.5; __utmz=1.1375348556.2.2.utmcsr=example.de|utmccn=(referral)|utmcmd=referral|utmcct=/game/index.php; __gads=ID=88f0a0a8b0698e1e:T=1375265099:S=ALNI_MYX8OxkwPxXQd7VY4qDImLK7fq_yQ; __utmb=1.4.9.1375431089319; __utmc=1', 
'Connection: keep-alive', 
'Pragma: no-cache', 
'Cache-Control: no-cache', 
'', 
'{}' 
); 



//set POST variables 
$url = 'http://www.example.com/dialogs/track'; 

//open connection 
$ch = curl_init(); 

//set the url, number of POST vars, POST data 
curl_setopt($ch,CURLOPT_URL, $url); 
curl_setopt($ch,CURLOPT_HTTPHEADER, $headers); 


//execute post 
$result = curl_exec($ch); 

//close connection 
if (curl_error($ch)) { 
print "Error: " . curl_error($ch); 
} 
else 
{ 
var_dump($data); 
curl_close($ch); 
} 

错误消息

Error: Recv failure: Connection reset by peer

-edit 2-

我玩耍了一点点,现在的连接工作,但似乎CSRF令牌没有正确提交,我收到一个错误!

Forbidden (403)

CSRF verification failed. Request aborted.

是他们的解决方案吗?

+0

欢迎来到Stack Overflow。您能否更具体地了解您目前已经写过的内容,以及您收到哪些错误?这将有助于我们弄清楚下一步你需要做什么来实现这个目标。你需要使用'curl_setopt(CURLOPT_HTTPHEADER,array(...));'来设置标题,就像它在这个请求中一样。没有更具体的信息,我想http://codular.com/curl-with-php是我能指出的最好的。 – kander

+0

好的,我编辑我的文章 –

回答

0

您的遗失:

curl_setopt($ch, CURLOPT_POST, true); 

我觉得你的问题是不是与CurlCSRF验证的运作方式。

可以说服务器设置了一个会话(基本上是一个cookie中的字符串,用于标识服务器上的数据)的请求。然后,您将该数据发回服务器,在那里它将CSRF令牌与链接到COOKIESESSION令牌进行比较,该令牌也会发回。

在您的请求中只有一个可能的会话cookie - csrftoken(其他属于google和cloudflare)。

这意味着CSRF令牌和会话标识符(csrftoken值)完全相同,即uuihXszJrkrXwnCkLKKDNQ8BrPRDqXvU,这不是CSRF验证的工作方式。

你需要得到会话cookie和CSRF令牌返回GET回应时,并送他们两个回来,一个作为COOKIE值,其他为POST值(可能是2头值,但2个不同的值)当你提出你的POST请求。