1

我需要在第 3 方网站上自动填写多个表格。该网站是用 JavaScript 编写的;协议是 HTTPS。我看到了 3 种方法来实现这一点。

  1. 将鼠标点击和按键发送到浏览器。
  2. 使用套接字,拦截从浏览器发送到服务器的所有数据(包括填写的表格);弄清楚格式;在不使用浏览器的情况下复制与服务器的通信。
  3. 使用自定义浏览器类。

有什么意见、例子吗?例如,我应该为#3 尝试什么课程?

除了基本的 HTML,我没有任何 Web 编程经验。我确实拥有丰富的 C++ (MFC)、Java 和 VB(Excel 宏)经验。

谢谢!

更新/澄清。目前,我的同事必须去一个网站,输入他的名字/密码,点击一个链接--复制-粘贴--提交--重复超过 9000 次。相反,我们希望能够填写 Excel 电子表格并单击一个按钮,该按钮将填写网站上的所有表格。

更新#2。HTTPS 的问题是“你不能嗅探数据,这是最简单的复制方法”——这就是共识吗?那么即使使用 cURL,也很难正确地形成服务器请求。我无法测试那么多:这几乎是实时数据,以后更正很困难。

那么,PhantomJS、Selenium……WatiN 呢?再次感谢您的想法!

4

5 回答 5

2

1 或 3:您可以使用PhantomJS来完成此操作。它不完全是发送鼠标点击或按键;它是一个由 JavaScript 控制的无头 WebKit 浏览器。wiki有一些自动化表单输入的有用示例。

2:如果您知道表单的结构,您可以通过cURL将表单数据作为POST请求发送

cURL 教程中的示例:

<form method="POST" action="junk.cgi">
  <input type=text name="birthyear">
  <input type=submit name=press value=" OK ">
</form>

这将是 cURL 命令:

curl --data "birthyear=1905&press=%20OK%20" http://example.com

于 2013-07-30T15:37:32.040 回答
2

单方面这样做(在网站所有者不知情的情况下)可能会在网站更新时中断(因为网站所有者保留进行他们想要的任何更改的权利。)除此之外,您可能违反了网站的服务条款。

您最好的办法是联系网站所有者,让他们告诉您应该如何自动将表单数据发送到网站。如果他们为您提供 API,您应该对 API 的稳定性有一定的信心。

于 2013-07-30T15:59:42.033 回答
1

试试 QA 代理 ( http://qaagent.com )。它仅适用于 Chrome(截至目前),您可以使用 javascript 和 jQuery 轻松开发您提到的自动操作。

于 2014-04-09T17:22:19.080 回答
1

我推荐一种“无浏览器”的方法......如果你按照 g-makulik 的建议使用 curl,你可以批处理/编写整个事情。如果它不需要加密,简单的 TCP 套接字和基本的 HTTP 标头将很容易模仿(您可以观察它们的流量)。如果是 SSL/TLS,您仍然可以使用浏览器的开发工具查看标头,然后使用 OpenSSL 或 Windows API 为您处理加密。

于 2013-07-30T17:30:55.127 回答
0

您应该查看 selenium ( http://docs.seleniumhq.org/ )。您可以使用 Selenium IDE(我认为它仅适用于 Firefox)或使用 WebDriver 来自动化测试(使用 java 或 python)。

使用 IDE,您可以使用“点击”和“按键”创建自己的宏。请注意@doron 告诉您的网站服务条款。使用 selenium,您可以添加超时以礼貌地将数据发送到服务器。

于 2013-07-30T17:11:25.690 回答