【问题标题】:Creating a 'robot' to fill form with some pages in创建一个“机器人”来填写表格,其中包含一些页面
【发布时间】:2013-06-20 15:45:16
【问题描述】:

我想实现一个可以自动填写表格的“机器人”。 当您可以在页面上填写数据时是否有解决方案,例如form1.html并提交,等待下一页并在form2.html上提交数据,等等...... 最后,它还应该“单击”一个按钮以获取表单创建的文件。

我希望这个“机器人”会使用一些机密信息,因此无法使用client side 技术来完成。

我在考虑PHP - 将其构建为网站-网络服务,这样您就可以将数据传输到网址或.Net 中的网络服务。

如果重要的话,我想自动填写的网站是ASP.NET

我在这里有点新意...任何人都可以提供一些示例或教程来做这件事。如果存在一些我没有在这里提到的技术来实现它,我也很乐意尝试它们。

【问题讨论】:

  • 您可以自己构建 HTTP 请求。请求页面,解析它并使用您的表单数据发送应答请求。至少你的浏览器是这样做的。

标签: php .net web-services bots


【解决方案1】:

表单通过发布数据来工作,因此您不必制作一个机器人来在每个字段中输入内容并单击提交,您只需 POST 将数据发送到服务器即可。

首先获取表单字段名称,以及表单的action

然后卷曲:

//set POST variables
$url = 'http://domain.com/get-post.php';
$fields = array(
                        'lname' => urlencode($last_name),
                        'fname' => urlencode($first_name),
                        'title' => urlencode($title),
                        'company' => urlencode($institution),
                        'age' => urlencode($age),
                        'email' => urlencode($email),
                        'phone' => urlencode($phone)
                );

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

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

//close connection
curl_close($ch);

来自this site 的片段。

【讨论】:

  • 我注意到输入被解码,然后发送到服务器,所以我不能从头开始POST,我需要通过表单
  • 那时他们可能正在使用 CSRF 攻击防护,除了使用加载网页的实际机器人之外,您无能为力
【解决方案2】:

使用Selenium

“Selenium 使浏览器自动化。就是这样。你用这种能力做什么完全取决于你。主要是为了测试目的而自动化 Web 应用程序,但当然不仅限于此。无聊的基于 Web 的管理任务可以(而且应该!)也应该是自动化的。”

查看示例here

【讨论】:

    猜你喜欢
    • 2023-01-27
    • 2020-08-23
    • 2016-07-26
    • 2021-06-12
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多