使用curl和php自动填写表单

使用curl和php自动填写表单,php,libcurl,Php,Libcurl,我试图写一个脚本,自动填写表格,然后自动按下提交按钮 我已经读过,您可以使用curl发布HTTP请求,但是当表单使用JavaScript处理post请求时,您会怎么做,如下面的代码 <form name="myform" action="javascript:void(0)" method="POST" onsubmit="return fancy_function(this)"> 根据您对上述评论的回答,您要做的不是用curl“填写表单”,而是将填写好的表单发布到表单通常发送到的

我试图写一个脚本,自动填写表格,然后自动按下提交按钮

我已经读过,您可以使用curl发布HTTP请求,但是当表单使用JavaScript处理post请求时,您会怎么做,如下面的代码

<form name="myform" action="javascript:void(0)" method="POST" onsubmit="return fancy_function(this)">

根据您对上述评论的回答,您要做的不是用curl“填写表单”,而是将填写好的表单发布到表单通常发送到的同一页面

这也称为跨站点发布,许多开发人员专门测试并不允许它提高安全性。如果表单有验证码,这也会困难得多

假设这样做仍然是有意义的(我以前在时事通讯注册表单中使用过这种技术),下面是您想要做的:

要获取表单的操作url,您需要查看站点的Javascript代码,并找到funcy_function()的定义位置。然后在函数体中,您可能会看到目标url。您还需要注意html中表单变量的特定名称。您需要使用完全相同的名称设置变量。然后,卷曲设置将如下所示:

$url = 'http://www.targeturl.com';
$myvars = 'myvar1=' . $myvar1 . '&myvar2=' . $myvar2;

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $myvars);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt( $ch, CURLOPT_HEADER, 0);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec( $ch );

这将把post变量发送到指定的url,模拟表单中通常发生的情况。如果您想解析或使用页面返回的html,它将以$response的形式出现。

为什么要使用curl来发布来自PHP的http请求?如果你想让它发布到另一个页面,只需更改html表单操作即可。此外,Curl是一个服务器端函数。对PHP来说,表单是否使用Javascript提交并不重要。也许我的帖子不够清楚。我想使用脚本自动填写表单,Curl可以发送post请求,因此它可以为我填写表单,但我不知道如何指定目标url。我知道如果我将操作更改为document.php,帖子将被发送到document.php。。但这不是问题所在。。顺便说一句,谢谢你花时间回答我!我知道php是服务器端的,我想这就是我需要的。如果我错了,请纠正我。我正在编写的脚本与表单不在同一网页上。我不是在尝试处理post请求,我是在尝试自动在线填写现有表单。这会造成危险吗?这不是发明验证码的原因吗?