如何使用 Mechanize 处理 JavaScript?

IT技术 javascript html ruby mechanize
2021-02-06 10:43:33

我正在连接到一个网站,正在登录。

该网站将我重定向到新页面,Mechanize 处理所有 cookie 和重定向作业,但是,我无法获取最后一页。我使用了 Firebug 并再次做了同样的工作,发现我不得不使用 Mechanize 传递另外两个页面。

我快速浏览了页面,看到有一些 JavaScript 和 HTML 代码,但无法理解,因为它看起来不像正常的页面代码。这些页面是做什么用的?他们如何重定向到其他页面?我该怎么做才能通过这些?

3个回答

如果您需要使用 Javascript 处理页面,请尝试WATIRSelenium - 它们驱动真正的 Web 浏览器,因此可以处理任何 Javascript。WATIR Classic 需要安装了特定扩展的 IE 或 Firefox,您将看到页面在运行时在屏幕上闪烁。

您的另一个选择是了解违规页面上的 Javascript 的作用并手动绕过它,但这似乎很麻烦。

@millimoose 你能在 WATIR 中执行脚本时隐藏浏览器吗?
2021-03-30 10:43:33
哇,线程死灵法术。我不知道了,我打赌“不”——无论如何,这是一个与 OP 提出的问题不同的问题,所以你可以在 SO 上单独提问,这样其他人就有机会回答。我还会考虑查看 PhantomJS,这是一个无头(即“无 UI”)WebKit 自动化器。它工作得很好,但上次我想用它做某事时,异步 API 使我需要做的事情太复杂了,所以我最终选择了 Selenium。
2021-03-31 10:43:33
谢谢大家。watir 已经完成了我想做的事情:) 看起来很棒,让我更喜欢 ruby​​ :) 第一次我试图访问的网站因为 user_agent 而生我的气,但是当我将它设置为 firefox 时,问题出现了走了。stackoverflow 岩石!我喜欢这里:)
2021-04-05 10:43:33

目前,Mechanize 不处理 JavaScript。有传言说最终将Johnson的能力合并到 Mechanize 中,但在此之前,您有两种选择:

  1. 充分了解 JavaScript 以了解如何遍历这些页面。
  2. 自动化的实际浏览器,使用JavaScript理解的Watir
约翰逊是一个死的项目。有替代品吗?
2021-03-25 10:43:33

这些页面是做什么用的?他们如何重定向到其他页面。我该怎么做才能通过这些?

有时工作是在这些页面上完成的。有时 JavaScript 会阻止自动访问,就像您尝试做的那样:)。许多网站都进行了不必要的检查以确保您拥有“良好”的浏览器,因此请确保将您的浏览器user_agent设置为常见的东西,例如 IE。有时将 设置user_agent为看起来像一个旧浏览器会让你在没有 JavaScript 的情况下过去。

网站自动化很有趣,因为您必须使用多种策略来超越网站及其软件开发人员。正如其他人所说,Watir 是目前通过 JavaScript 的最佳工具。