当前位置: 首页 > 知识库问答 >
问题:

通过Charles代理casperjs/phantomjs

阴元青
2023-03-14

我想使用casperjs/phantomjs自动填充一些web表单。为了调试我的casperjs脚本,我想使用(很棒的)Charles Web代理作为中间人SSL代理,但还没有弄清楚如何在casperjs/phantomjs中实现这一点。

我已经允许Charles在Firefox和远程服务器之间进行代理。浏览器和远程服务器都接受SSL证书,Charles正确解码HTTPS数据包,以便我可以看到浏览器和远程服务器之间的通信量。到目前为止还不错。

我还能够在没有Charles代理的情况下运行casperjs脚本,并验证我的脚本是否正确地将我登录到远程站点,如中所示:

$ casperjs test-login.js
found login form...
logged in...

也很好。

当我试图通过Charles将phantomjs定向到代理时,如:

$ casperjs --web-security=no --proxy=127.0.0.1:8888 test-login.js

。。。casperjs甚至没有收到登录页面,Charles控制台中显示以下内容:

URL     https://www.<my server>.com
Status  Failed
Failure No request was made. Possibly the SSL certificate was rejected.
Notes   You may need to configure your browser or application to trust the Charles Root Certificate. See SSL Proxying in the Help menu.

我的猜测是phantomjs的浏览器不喜欢Charles提供的SSL证书,但我认为--web-security=no应该覆盖它。

我可能错过了一些明显的东西。以前有人走过这条路吗?

我偶然发现了解决办法。请参见下文。。。

$ casperjs --version
1.1.0-beta3
$ phantomjs --version
1.9.8

。。。Charles是第3.10.1节

共有1个答案

韦安怡
2023-03-14

(如果回答自己的问题是一项奥林匹克运动,我会争夺金牌。)

添加--ignore ssl errors=true--ignore ssl errors=true--code>是必要的,并且足以让事情正常运行--通过它,您可以看到通过Charles的所有流量:

$ casperjs --ignore-ssl-errors=true --proxy=127.0.0.1:8888 test-login.js
found login form...
logged in...

智者的话:如果交流似乎进展缓慢,请确保您没有意外打开查尔斯的节流。去过那里!:)

 类似资料:
  • 我正在尝试让Genymotion(一个托管在Virtualbox中的x86 Android模拟器)与Charles代理一起工作。我已经设法将设备连接到设备wifi代理设置中的代理,使用网关ip(vm配置为使用仅限主机的适配器fwiw),并且http流量可以很好地代理。我已经在vm上安装了charles证书,但所有ssl连接仍然失败,出现“ssl:Unrecognized ssl message,p

  • Charles Proxy是否还需要设置更多配置才能在Ubuntu上使用移动设备捕获流量?我已经在Ubuntu上安装了Charles Proxy,并用sudo bash启动了它/查尔斯。它确实启动了它,但存在警告和错误。 信息[com.xk72.charles.CharlesContext]-加载配置:/root/。查尔斯。配置信息[com.xk72.charles.gui.transaction

  • 问题内容: 在程序中使用用户身份验证的代理的最佳/最简便方法是什么?我目前有这个,但是打开浏览器时我需要输入用户名和密码。 问题答案: 您可以使用Proxy Auto auth插件实现相同的功能 使用以下扩展程序下载扩展程序 https://chrome.google.com/webstore/detail/get- crx/dijpllakibenlejkbajahncialkbdkjc/rel

  • CasperJS 是一个开源的导航脚本和测试工具,使用 JavaScript 基于 PhantomJS 编写,用于测试 Web 应用功能,Phantom JS是一个服务器端的 JavaScript API 的 WebKit。其支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG 可轻松的定义导航场景,提供一些很有用的高级函数、方法和语法糖用于定义常用的任务

  • 问题内容: 我面临着Java6 / 8的奇怪行为。我尝试通过需要基本用户身份验证的代理进行隧道传输。通过标准的Java身份验证器执行此操作。如果我尝试访问https网址作为第一个网址,则会引发异常: java.io.IOException:无法通过代理隧道。代理返回“需要HTTP / 1.1 407代理身份验证” 但是,如果我先访问http URL,然后再访问https URL,则https访问正

  • 我想为Android模拟器代理网络流量。 我好像没法让它运转起来。 现在我尝试运行我的应用程序。我的第一个网络电话通过查尔斯成功地打出去了。响应返回,Charles将其显示出来。但是,响应没有成功地传递到应用程序。 我在错误回调中设置了一个断点,可以看到,它是由引起的。 为什么Charles不将结果正确地传递给应用程序呢? 我需要在Charles上执行配置页面末尾定义的操作吗? 这似乎不对--我错