使用Tor网络执行JavaScript而无需人工干预

时间:2014-05-28 06:54:19

标签: javascript ajax perl sockets tor

简而言之

我想通过Tor网络加载html内容并执行JavaScript以通过此网络通过AJAX加载其他内容。这必须通过在Linux服务器上运行而无需任何人工交互的脚本自动完成。我找不到能够自动执行通过Tor网络传输的JavaScript的工具组合。

详细

我想编写一个具有以下特征的应用程序:

环境

  • 自主运行(没有任何人为干预)
  • 在非GUI(“无头”)Linux服务器(Ubuntu 12.04)上运行

功能

  • 使用Tor网络匿名加载网页内容(html文档,图片......)
  • 执行嵌入或附加到html文档的JavaScript(通过AJAX或类似技术加载其他内容)
  • 当所有内容都加载时:将html文档转换为DOM树并从该树中提取特定项目。

环境限制禁止使用Web浏览器。一切都必须通过程序或脚本完成。功能限制强制执行JavaScript,不直接连接到互联网,而是通过Tor网络。

Tor

要使用Tor网络,我可以运行在我的机器上提供套接字的Tor客户端。然后我编写一个连接到此套接字的Perl脚本。 Perl脚本通过此套接字将http和https请求发送到Tor客户端,Tor客户端随后通过Tor网络对其进行路由。所有的反应都是一样的。

我测试了这个,它运行正常。但是在Perl脚本中,执行收到的html文档附带的JavaScript真的很难。我不得不在Perl中编写一个JavaScript模拟器来实现这一点,但这超出了我的可用时间和超出我的技能。

的JavaScript

要执行嵌入式或附加的JavaScript我可以使用像phantomJS或slimerJS这样的工具(phantomJS在Ubuntu 12.04上无法正常工作,所以我使用slimerJS提供几乎相同的功能)。使用这些工具,我可以加载html文档并自动获取随附的所有JavaScript,因此我还会收到所有内容,这些内容不是最初的html文档的一部分,但稍后会被Ajax或类似技术加载。此外,我可以轻松地分析文档的DOM树,以提取我感兴趣的项目。

我也测试了它,它也可以正常工作,但我知道的工具(phantomJS和slimerJS)使用自己的程序连接到互联网。似乎没有办法告诉他们连接到套接字并使用它通过互联网进行通信。

我的问题

有没有办法通过Tor网络自动执行Ajax调用?

对我而言,似乎存在两种可能的方式:

  1. 获取在Perl脚本中执行的JavaScript代码。这可以通过一个模块完成,但我找不到任何模拟JavaScript解释器的cpan模块。解释器应该调用我必须编写的Perl函数,而不是直接连接到Internet。
  2. 强制slimerJS(或phantomJS或任何其他工具)连接到localhost上的套接字并通过此套接字发送所有请求。也许有可能在假装提供直接访问互联网的环境中启动slimerJS,但事实上将所有通信重定向到Tor客户端的套接字?

1 个答案:

答案 0 :(得分:2)

如果您正在运行Tor客户端,则可以使用其侦听的地址进行代理设置。检查文档以了解您需要传递的代理选项:

代理类型将是SOCKS。请记住,您需要将地址套接字绑定到本地。