如何给phantomjs组件加代理

在pyspider里面,通过 proxy可以设置代理IP,但需要通过phantomjs去请求带有js的网页时,phantomjs并不能使用通过在crawl()中设置的代理,请问该如何设置?看了一下phantomjs的官方文档,貌似也没有很详细的介绍。求解决思路,是否需要修改源码?谢谢

阅读 10.6k
2 个回答

1、升级PhantomJS到最新版(老版本不支持设置代理,官方的文档木有相关说明)
2、修改phantomjs_fetcher.js(自己搜索一下,在pyspider/fetcher目录下)
在service的function中添加如下代码(自己可以根据实际情况优化):

        //set proxy
        if (fetch.proxy) {
            var p = fetch.proxy.split(":");
            p_ip = p[0];
            p_port = p[1];
            phantom.setProxy(p_ip, p_port, "HTTP");
        } else {
            phantom.setProxy("");
        }

其实核心就是PhantomJS可以使用 phantom.setProxy 方法设置代理

/**

  • proxy.mimvp.com

  • 2017.6.22
    *

  • http : phantomjs --proxy-type=http --proxy=138.68.161.157:8080 mimvp-phantomjs.js

  • socks5 : phantomjs --proxy-type=socks5 --proxy=82.209.150.212:45454 mimvp-phantomjs.js
    *

*/

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进