2

我正在编写一个从多个网站获取信息的工具,都需要我登录。我的正常方法是遵循 Fiddler 或类似的请求和响应,并遵循该直接路径。

不过,这感觉有点严格。网站中的最小更改可能会破坏我的代码。因此,我正在寻找可以使用以下方式的无 UI 浏览器之类的东西:

Browser.Load("https://sourceforge.net/account/login.php");
Browser.Document.ElementById("form_loginname").Value = "login";
Browser.Document.ElementById("form_pw").Value = "password";
(Browser.Document.ElementById("login") As WebButton).Click(); // the login button is named "login".

这段代码完成后,我想在普通浏览器中看到我会得到的页面。

像我描述的那样存在吗?

编辑 - C# 支持是首选

4

2 回答 2

2

这很像 Web 应用程序的自动化用户测试,主要区别在于您不拥有经过测试的应用程序。

Selenium是一个流行的自动驱动浏览器的库。如果您想以无头方式使用 Selenium 运行程序,您可以使用无头 X 服务器,例如 Xvfb。关于不使用 Xvfb,关于替代品有一个较老的问题。

由于 Selenium 可以通过各种编程语言驱动许多浏览器,因此我鼓励您探索 StackOverflow 上的 Selenium 标签。

您特别感兴趣的是SimpleBrowser.WebDriver:用于 .Net 的内存中轻量级浏览器的 Selenium 绑定。实际上,SimpleBrowser可以直接满足您的需求,而不会增加 Selenium 的复杂性。

于 2012-11-08T23:38:53.653 回答
1

我的Xidel可以做这样的事情:

例如:

 xidel https://sourceforge.net/account/login.php -f 'form((//form)[2], "form_loginname=login&form_pw=password&login=Log in")' --download site.html

('login=Log in' 是提交按钮的值)

它不支持 JavaScript 通过。我听说有一种叫做 Selenium 的东西...

于 2012-11-08T23:39:40.300 回答