通过Charles代理casperjs / phantomjs

时间:2015-05-18 00:00:59

标签: ssl proxy phantomjs casperjs charles-proxy

我想使用casperjs / phantomjs自动填充某些网页表单。为了调试我的casperjs脚本,我想使用(精彩)Charles Web Proxy作为中间人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应该覆盖它。

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

更新

我偶然发现了解决方案。见下文......

PS

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

......查尔斯是3.10.1

1 个答案:

答案 0 :(得分:2)

(如果回答一个人自己的问题是奥林匹克运动,那我就是在争夺金牌。)

添加--ignore-ssl-errors=true是必要的,足以让事情顺利进行 - 通过这种方式,您可以看到通过Charles的所有流量:

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

注释

明智的话:如果交换似乎慢慢地 ,请确保你没有意外地打开Charles的限制。到过那里! :)