使用 Tor 网络执行 JavaScript,无需人工交互

2024-04-02

简而言之

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

详细

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

环境

  • 自主运行(无需任何人为交互)
  • 在非 GUI(“无头”)Linux 服务器上运行 (Ubuntu 12.04)

特征

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

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

Tor

要使用 Tor 网络,我可以运行一个在我的机器上提供套接字的 Tor 客户端。然后我编写一个连接到该套接字的 Perl 脚本。 Perl 脚本通过此套接字将 http 和 https 请求发送到 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 函数,而不是直接连接到互联网。
  2. 强制 slimerJS(或 phantomJS 或任何其他工具)连接到本地主机上的套接字并通过此套接字发送所有请求。也许可以在一个假装提供直接访问互联网但实际上将所有通信重定向到 Tor 客户端套接字的环境中启动 slimerJS?

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

  • slimerJS http://docs.slimerjs.org/nightly/configuration.html
  • 幻影JS http://phantomjs.org/api/command-line.html

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Tor 网络执行 JavaScript,无需人工交互 的相关文章

  • 无法填充名为“status”的数组

    我正在尝试做一些非常简单的事情 在 Javascript 中初始化一个数组 而且它在 Google Chrome 中不起作用 这是代码 status for i 0 i lt 8 i status i false alert status
  • 为什么“事件”在 Chrome 中全局可用,而在 Firefox 中则不然?

    在回答另一个问题时 出现了一个与event对象在匿名函数中可用 无需传入 在 Chrome 中 下面的代码工作正常 但 Firefox 会抛出错误 document ready function uspsSideboxTrackingClo
  • javascript 和 PHP 中的正则表达式有什么区别吗?

    这是在 javascript 中验证电子邮件地址的正则表达式 我不确定是否可以直接在 PHP 中使用它 a z d u00A0 uD7FF uF900 uFDCF uFDF0 uFFEF a z d u00A0 uD7FF uF900 uF
  • 获取请求的客户端 IP 地址而不是 Cloudflare 的 IP 地址

    Cloudflare 会更改传入请求的 IP 地址 因为 Cloudflare 是我的网站和互联网之间的中间件 代理 我该怎么办获取请求的初始IP地址 而不是 Cloudflare 的 IP 地址 我听说过mod cloudflare但是这
  • jquery ajax调用一个接一个循环而不停止页面渲染

    我有一个超过 100 行的表 每行包含 pdf 文件及其说明以及最后一列状态 状态显示 pdf 文件是否可读 一旦表格加载到浏览器中 我就会从表格的每一行获取每个文件名 并使用 ajax 调用对其进行处理 如果文件可读 我将该行的状态字段更
  • 如何在提交表单之前删除自动数字格式?

    我正在使用 jQuery 插件自动数字 http www decorplanit com plugin 但是当我提交表单时 我无法删除之前字段上的格式POST 我尝试使用 input autonumeric destroy 和其他方法 但它
  • 光滑的旋转木马不工作

    我一直在尝试简单地实现 Slick Carousel 的工作 我已按照 Git 页面上的说明进行操作 https github com kenwheeler slick https github com kenwheeler slick 这
  • 在 JavaScript 中定位提示弹出窗口

    我有一个如下所示的 JavaScript 提示 我想将提示放在屏幕中心 如何使用 javascript 做到这一点 function showUpdate var x var name prompt Please enter your na
  • 单击输入字段会触发窗口调整大小

    我有一个带有徽标 菜单和搜索的标题 当我在桌面上时 我会按该顺序显示所有元素 但如果我的窗口宽度小于 980 像素 菜单会隐藏 有一个切换按钮 并且徽标会与nav并附在徽标之后 如果宽度更大 则徽标将再次分离并附加到 DOM 中的旧位置 w
  • 如何在一段特定时间后在后台运行 ajax 调用? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在一段特定的时间后显示警报消息 您想继续吗 如果用户同意 则 ajax 调用必须在后台运行 否则取消 ajax 调用 那么请告诉我
  • EJS在JS onload函数中访问express变量

    我知道你可以像这样获取 ejs 文件中变量的值 h1 h1 如果我要在同一个 ejs 页面的 onload javascript 函数中使用相同的标题变量 我将如何使用它 例如 这个函数产生一个控制台错误说 未捕获的语法错误 意外的标识符
  • AngularJS 输入字段未从控制器内的 setTimeout 更新

    我正在使用 AngularJS 支持的页面 并且我需要在只读输入文本字段内显示正在运行的时钟 与data ng model 为了模拟运行的时钟 我使用了 JavaScript 调度程序setTimeout每 1000 毫秒调用一个函数 该函
  • 在 jQuery AJAX 成功中从 MySql 获取特定响应

    好吧 我有这个 ajax 代码 它将在 Success 块中返回 MySql 的结果 ajax type POST url index php success function data alert data My Query sql SE
  • Perl 三元条件运算符

    我正在尝试在脚本中编写更高效的代码 并且有时会实现三元条件运算符 我不明白为什么在循环中使用三元条件运算符时会得到额外的结果 usr bin perl use strict use warnings my array Serial 123
  • (0, eval) () 的作用是什么? [复制]

    这个问题在这里已经有答案了 以下内容来自这个问题 https stackoverflow com questions 14119988 return this 0 evalthis 14120023 14120023 function q
  • `ie9` - contenteditable false 在父级可编辑时不起作用

    我正在尝试制作内容可编辑和不可编辑的容器 用户可以通过 3 种方式使用它 他们可以将内容与non editable 他们可以将内容与editable 他们可以在不选择其中之一的情况下放置内容 可编辑 我正在努力实现以下目标 content
  • 跨浏览器:禁用输入字段的不同行为(文本可以/不能复制)

    我有一个被禁用的输入 html 字段 在某些浏览器 Chrome Edge Internet Explorer 和 Opera 中可以选择并复制文本 但至少在 Firefox 中这是不可能的 您可以通过在不同浏览器中执行以下代码来测试
  • 在 JSP 或 Javascript 中清除浏览器缓存中的图像

    我正在为一所大学开发JSP Web 应用程序 用户页面中显示人员图片 用户注销后如何从网络浏览器缓存中清除这张图片 使用 JSP 或 JavaScript 那是不可能的 最好的选择是完全禁用相关资源的缓存 创建一个filter https
  • 使用 JavaScript onclick 添加表格行

    我正在尝试使用 javascript 添加下面找到的完全相同的元素 我已经尝试了这里找到的所有解决方案 我什至尝试用php echo但没有运气 无需更改任何输入名称或类似内容 只需单击该按钮即可向表中添加另一行 仅此而已 这是该元素 tr
  • openssl_pkey_get_details($res) 不返回公共指数

    我在用着这个例子 https stackoverflow com a 12575951 2016196使用 php 生成的密钥进行 javascript 加密openssl图书馆 但是 details openssl pkey get de

随机推荐

  • Func<> 获取参数信息

    如何获取传入参数的值Func lt gt C 中的 Lambda IEnumerable
  • 如何将 OData 键值添加到我的实体框架类?

    我正在使用 MVC 5 Microsoft OData 2 1 和 Entity Framework 6 我尝试使用我使用 EntitySetController 类编写的 OData 源 当我添加服务引用并使用 OData 元数据时 它可
  • Maven 货物部署到 war 文件无法作为 teamcity 的一部分部署

    相同的部署在 Windows 和 Linux 上可以正常工作 但使用 teamcity 及其内置 Maven 时出现错误 本地部署 报错 容器配置目录 BuildAgent work 68d4a71c8dc5cfd9 target carg
  • 哪些脚本会进入 Python 包的 bin 文件夹?

    我正在从 Learn Python the Hard Way 及其中提到的练习之一中学习 Python 包 在bin目录下放置一个可以运行的脚本 对我来说 这似乎有点模糊 我不太确定 bin 文件夹中会包含什么样的脚本 搭便车者的包装指南
  • 将按钮放在 div 或屏幕底部

    我想将按钮放置在 div 底部或屏幕底部 但处于非固定位置 我的代码结构如下所示 div 1 div 2 div 3 button 我想将按钮放在div 1的底部 其高度是使用jQuery设置的 高度是屏幕的高度 所以将按钮放在屏幕的底部也
  • JavaFX访问内部webkit文档

    我正在尝试访问javafx web com sun webkit dom来自我的未命名模块 javafx 项目 为此 我创建了一个类com sun webkit dom DomMapper 我在 IDE 中没有看到任何错误 但是当我使用mv
  • 如何使用 CDH4 和 Yarn 查看 Hadoop 作业历史记录和日志?

    我使用 Yarn 下载了 Hadoop 的 CDH4 tar 作业运行良好 但我不知道在哪里查看作业日志 在 MRv1 中 我只需访问 JobTracker Web 应用程序 它就有工作历史记录 也可以从这里访问各个作业的日志 或者转到lo
  • R:用升序填充 NA 值

    With R我想用升序 降序数字 整数 填充一列大部分为 NA 值的列 但相对于值为 0 的行 编号应按主题 第一列 分组 这听起来很混乱 所以请看这个例子 数据如下所示 Column 3 是当前数据 Column 4 是目标数据 Subj
  • 使用dispatch_async在Swift中并发分析数组

    我正在尝试使用 GCD 的后台线程同时分析照片 这是我写的代码 dispatch async dispatch get global queue Int QOS CLASS UTILITY value 0 for var i 0 i lt
  • C++ 程序在执行 std::string 分配时总是崩溃

    我一直在尝试调试崩溃的应用程序中的崩溃 即断言 检测到 glibc free 无效指针 0x000000000070f0c0 当我尝试对字符串进行简单分配时 请注意 我正在使用 gcc 4 2 4 的 Linux 系统上进行编译 优化级别设
  • 在 PowerShell 中将数组追加到数组数组

    我正在尝试使用磁盘上的 CSV 文件以编程方式在 PowerShell 中构建多维数组 我一直将数组导入到临时变量中 然后将数组附加到数组中 我得到的是包含总行数的单个数组 而不是数组的数组 我用较小的数组进行了计算 发现了以下内容 arr
  • SQL 查询“00904.00000 - “%s:无效标识符”

    嗨我有以下代码 SELECT entertainer id entertainer groupname FROM casestudy entertainer INNER JOIN casestudy availability ON case
  • 无法调用非函数类型“Any?!”的值:- Firebase、Swift3

    这是我的代码before迁移到 Swift 3 ref observeEventType ChildAdded withBlock snapshot in let currentData snapshot value objectForKe
  • 如何更改列表视图的边框颜色

    我使用 win32 api 创建了一个列表视图 InitCommonControls HWND hwndList1 CreateWindow WC LISTVIEW L WS VISIBLE WS CHILD LVS REPORT LVS
  • 正在处理中播放多个视频

    我正在处理并希望自动一个接一个地播放多个视频 下面是我当前的代码 但是当第一个视频播放完毕时 下一个视频不会自动开始 希望你能帮忙 import processing video Movie myMovie1 myMovie2 myMovi
  • ScriptManager.RegisterStartupScript 不适用于 ASP 按钮单击事件

    我尝试过什么 ScriptManager RegisterStartupScript this typeof Page alert alert Fill all fields true return
  • JQuery UI设置了我自己的容忍度

    我正在为我的小宝贝制作游戏 我想更改可放置对象中的默认容差 我知道 有像这样的默认值touch fit intersect and pointer 但在我的应用程序中它无法正常工作 因为我想要介于拟合和相交之间的东西 当我使用 fit 时
  • XSLT - 检查元素字符串中是否存在模式

    我有以下元素作为较大 XML 的一部分
  • npm 更新检查失败版本 5.6.0

    我正在尝试使用 npm 但它对我不起作用 它给了我一个错误 例如 有谁可以告诉我我必须做什么吗 我使用的是5 6 0版本 npm 版本应该更新 npm i g npm
  • 使用 Tor 网络执行 JavaScript,无需人工交互

    简而言之 我想通过 Tor 网络加载 html 内容并执行 JavaScript 以通过 AJAX 通过该网络加载其他内容 这必须通过在 Linux 服务器上运行的脚本自动完成 无需任何人工交互 我找不到可以通过 Tor 网络自动执行 Ja