我需要在第三方网站上自动填写多个表单。该网站是用JavaScript编写的;协议是HTTPS。我看到了实现这一目标的3种方法。
任何评论,例子?例如,我应该为#3尝试什么课?
除了基本HTML之外,我没有任何Web编程经验。我有丰富的C ++(MFC),Java和VB(Excel宏)经验。
谢谢!
UPDATE /澄清。目前,我的同事必须去一个网站,输入他的名字/密码,点击链接 - 复制 - 粘贴 - 提交 - 重复超过9000次。相反,我们希望能够填写Excel电子表格并单击一个按钮,该按钮将填写网站上的所有表单。
更新#2。 HTTPS的问题在于“你无法嗅探数据,这是复制它的最简单方法” - 这是一致意见吗?那么即使使用cURL也很难正确地形成服务器请求。我无法测试那么多:这几乎是实时数据,以后进行修正很困难。
所以,PhantomJS,Selenium ...... WatiN怎么样?再次感谢您的想法!
答案 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,您可以添加超时以礼貌地将数据发送到服务器。