如何在WireMock中成功获取HTTPS端点代理?

时间:2017-01-24 19:57:32

标签: java https http-proxy wiremock

我正在编写一个内部使用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特定的命令行开关才能使其正常工作?

更新

我暂时感到振奋,看到最近发布的2.5.0最近合并了https-bind-address-bug,这听起来非常相关。我试过这个版本,但不幸的是没有区别。

1 个答案:

答案 0 :(得分:3)

部分解决了 - 我的主要错误是为WireMock和客户端分别设置了HTTPS连接的代理地址。我现在正在使用:

    List<int> a = new List<int>();
    List<int> b = new List<int>();
    var common = a.Intersect(b);

我已添加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 ,因此我可以看到是否有任何HTTPS流量点击代理(现在是)。

这是新的客户端命令,带有新的代理指令:

--print-all-network-traffic

但是,现在实际上正在使用代理,看起来操作未成功完成。我尝试过其他加密网站并收到同样模糊的错误:

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/

我已根据标准&#34; wget&#34;取代了用户代理,以防第三方拒绝。字符串,但这似乎也不会影响事情。

我会问一个关于此的新问题,以缩小这是WireMock还是Wget问题。