所以我用PHP写了一个脚本,它需要JavaScript来运行。我很难找到一个解决方案,如何在PHP上运行JavaScript,同时使用一些Linux工具来使它自动化(因为在我的浏览器中运行它不是一个选择,我需要它是一个crontab)。使用php
命令也不是一个选择,因为它不运行JavaScript。所以我找到了一个解决方案;是山猫。
所以我的问题是:由于某种原因,JavaScript在我的浏览器中运行良好,但在Lynx中却不行。使用Lynx时,页面加载时不涉及任何JavaScript。有没有办法在Lynx中调试JavaScript,类似于Google Chrome,你可以从控制台查看正在发生的事情。是什么原因导致脚本不能在Lynx中运行?
编辑:
所以很明显Lynx不支持JavaScript。如果是这样的话,我的问题是,什么支持呢?我需要像浏览器一样运行这个脚本,但要从Linux命令提示符下运行。如果操作系统在这种情况下很重要的话,我运行的是最新版本的Ubuntu。
5条答案
按热度按时间svmlkihl1#
Lynx不支持Javascript。
根据你对你要做的事情的总结(登录一个需要JavaScript来加密密码的网站),我强烈建议你考虑使用Selenium或其他浏览器自动化包。即使你没有这样的层也能正常提交密码,如果你使用像Lynx这样的极简浏览器,网站可能会有其他问题。
jqjz2hbq2#
Lynx不支持JavaScript,但是基于SpiderMonkey的替代文本浏览器ELinks支持JavaScript。有关如何在中编译它,请参阅手册。
另外,我真的很困惑你想在这里完成什么...
ubbxdtey3#
你需要的是一个叫做Headless Browser的浏览器,比如PhantomJS就是其中之一,我觉得是最流行的一个。
tjrkku2a4#
如果你只想从命令行执行Javascript,我建议你使用nodejs或otto,作为一个整体的无头浏览器,它们的性能占用要小得多。
如果你需要的不仅仅是普通的Javascript,比如DOM之类的,你应该试试其他人建议的无头浏览器(Chrome,PhantomJS)。
如果您不仅需要一个浏览器,而且还想使用该浏览器进行自动测试,那么Selenium仍然是一个不错的选择。
这实际上取决于您的用例需要多少。
eufgjt7s5#
selenium 是要走的路,但正如你所注意到的,它需要一个显示器。然后需要启动,雅达雅达雅达,现在你有一个相当复杂的设置正在进行!!
谢天谢地,还有一种方法可以自动化所有这些,那就是通过一个自动化框架。我推荐Jenkins,它已经有一个插件可以启动一个x服务器。
因此,大致的管道如下:
正如你所想象的,这是一个相当不错的设置,但是从技术上讲它可以满足你的要求,很抱歉它没有把wget管道传输到lynx那么简单。
另一种方法是在不假设浏览器的情况下将网页重写为“做些什么”,例如,使用一个GET参数将其置于“自动模式”,然后它会假设它是从一个cron运行的,并通过一个更短的电路来实现它的快乐。