如何在WireMock中成功获取HTTPS端点代理?
我正在编写一个内部使用WireMock的HTTP记录回放代理,并且在记录HTTPS目标时遇到问题。 HTTP站点工作正常。
以下是我为未加密的网站设置WireMock代理的方法:
java \ -jar /var/proximate/wiremock-standalone-2.4.1.jar \ --port 9000 \ --proxy-all http://ilovephp.jondh.me.uk \ --record-mappings \ --root-dir /remote/experiment/record/http
然后,我可以使用此命令在该站点上记录任何内容:
wget -e use_proxy=yes -e http_proxy=proximate-proxy:9000 \ http://ilovephp.jondh.me.uk/en/tutorial/make-your-own-blog
在短时间内,我将获得一些自动创建的映射:
/ # ls -R /remote/experiment/record/http /remote/experiment/record/http: __files mappings /remote/experiment/record/http/__files: body-tutorial-make-your-own-blog-tWrNm.txt /remote/experiment/record/http/mappings: mapping-tutorial-make-your-own-blog-tWrNm.json
这是一回事,但在SSL网站上。 代理优先:
java \ -jar /var/proximate/wiremock-standalone-2.4.1.jar \ --port 9000 \ --proxy-all https://www.rottentomatoes.com/ \ --record-mappings \ --root-dir /remote/experiment/record/https \ --verbose
这是获取:
wget -e use_proxy=yes -e http_proxy=proximate-proxy:9000 \ https://www.rottentomatoes.com/
WireMock的结果是创建了内部缓存目录,但它们不包含任何内容:
/ # ls -R /remote/experiment/record/https /remote/experiment/record/https: __files mappings /remote/experiment/record/https/__files: /remote/experiment/record/https/mappings:
我在Docker容器中使用Alpine 3.4上的WM 2.4.1。 我是否需要使用某些https
特定的命令行开关来实现此function?
更新
我暂时感到振奋,看到最近发布的2.5.0最近合并了https-bind-address-bug
,听起来非常相关。 我试过这个版本,但不幸的是没有区别。
这部分解决了 – 我的主要错误是为WireMock和客户端分别设置了HTTPS连接的代理地址。 我现在正在使用:
java \ -jar /var/proximate/wiremock-standalone-2.4.1.jar \ --port 9000 \ --https-port 9050 \ --proxy-all https://www.rottentomatoes.com/ \ --record-mappings \ --root-dir /remote/experiment/record/https \ --verbose \ --print-all-network-traffic
我添加了--print-all-network-traffic
所以我可以看到是否有任何HTTPS流量到达代理(现在是)。
这是新的客户端命令,带有新的代理指令:
wget -e use_proxy=yes -e http_proxy=proximate-proxy:9000 \ -e https_proxy=proximate-proxy:9050 \ --verbose \ --user-agent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0" \ https://www.rottentomatoes.com/
但是,现在实际上正在使用代理,看起来操作未成功完成。 我尝试过其他加密网站并收到同样模糊的错误:
Resolving proximate-proxy... 172.18.0.2 Connecting to proximate-proxy|172.18.0.2|:9050... connected. Failed reading proxy response: No error information Retrying. --2017-01-26 09:20:18-- (try: 2) https://www.rottentomatoes.com/ Connecting to proximate-proxy|172.18.0.2|:9050... connected. Failed reading proxy response: No error information Retrying. --2017-01-26 09:20:20-- (try: 3) https://www.rottentomatoes.com/ Connecting to proximate-proxy|172.18.0.2|:9050... connected. Failed reading proxy response: No error information Retrying. ^C
我已经替换了用户代理,以防有一些基于标准“wget”字符串的第三方拒绝,但这似乎也不会影响事情。
我会问一个关于这个的新问题,以缩小这是WireMock还是Wget问题。