PHP cURL-POST是否被发送到空页面?

PHP cURL-POST是否被发送到空页面?,php,curl,Php,Curl,我正在尝试自动使用,用户可以使用临时电子邮件地址,这些地址也可以由他们手动指定。它使用了一种非常简单的反垃圾邮件保护,通过在表单中输入带有随机字符集的,然后需要将其包含在POST请求中。因此,如果CSRF是bj152nvua2ob,我希望我的新地址是“john@l0real.net“,我的帖子需要是: csrf=bj152nvua2ob&mail=john&domain=@l0real.net 问题是,我不能用cURL和PHP实现这一点。以下是我的代码的顶部: $ch = cu

我正在尝试自动使用,用户可以使用临时电子邮件地址,这些地址也可以由他们手动指定。它使用了一种非常简单的反垃圾邮件保护,通过在表单中输入带有随机字符集的
,然后需要将其包含在POST请求中。因此,如果CSRF是
bj152nvua2ob
,我希望我的新地址是“john@l0real.net“,我的帖子需要是:

csrf=bj152nvua2ob&mail=john&domain=@l0real.net
问题是,我不能用cURL和PHP实现这一点。以下是我的代码的顶部:

$ch = curl_init ();

curl_setopt ($ch, CURLOPT_URL, "temp-mail.org/en/option/change/");
// Without CURLOPT_FOLLOWLOCATION, the page is not going to load.
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");

$html = curl_exec ($ch);
然后,在得到响应后,我开始生成一个新的邮件地址,并开始获取CSRF,因此我编写了两个简单的函数,称为“generate_mail”和。我已经测试了这两个,他们似乎没有任何问题

$csrf = get_csrf ($html);
$mail = generate_mail ();
$post = "csrf=$csrf&mail=$mail&domain=@l0real.net";
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $post);

file_put_contents ("final_response.html", curl_exec ($ch));

curl_close ($ch);
在我的电脑上创建了文件
final_response.html
,然后查看它之后,我注意到结果并不是我所期望的。后来我尝试了一些,我决定用Fiddler调试我的连接,然后我发现了一些有趣的东西。这是我在浏览器中使用此网站时得到的信息:

还有这个卷曲:
.


请注意,有1个元素(不包括隧道)与。。。4.第一个元素是空响应,但第二个元素包含HTML页面。最后两个是相同的:第三个是空响应(我的帖子就是在这里发送的),而第四个包含HTML页面,其中包含不同的CSRF和错误的邮件地址(由站点本身生成,而不是由我生成)。据我所知,每次我使用
curl\u exec
,它首先加载一个空页面,然后加载正确的页面。我所有的请求都被发送到空的请求,因此以后会被忽略。这是安全措施,还是我没有正确配置cURL?我试图提供尽可能多的信息,展示我的每一步,希望这个问题能够得到解决。

通过添加以下代码行解决:

curl_setopt ($ch, CURLOPT_POSTREDIR, 3);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $path_to_cookies);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $path_to_cookies);

现在,它按照预期的方式工作

您可能希望在发送之前进行编码。即使我不发送任何内容,并且在第一次执行
curl\u exec
之后,我使用
curl\u close
,我仍然会得到一个空白和正确的页面,而使用浏览器我只能得到正确的页面。