自动填写Web表单

时间:2013-07-30 15:15:49

标签: c++ forms web autofill

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

  1. 将鼠标点击和按键发送到浏览器。
  2. 使用套接字拦截从浏览器发送到服务器的所有数据(包括填写的表单);找出格式;在不使用浏览器的情况下复制与服务器的通信。
  3. 使用自定义浏览器类。
  4. 任何评论,例子?例如,我应该为#3尝试什么课?

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

    谢谢!

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

    更新#2。 HTTPS的问题在于“你无法嗅探数据,这是复制它的最简单方法” - 这是一致意见吗?那么即使使用cURL也很难正确地形成服务器请求。我无法测试那么多:这几乎是实时数据,以后进行修正很困难。

    所以,PhantomJS,Selenium ...... WatiN怎么样?再次感谢您的想法!

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

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