使用polipo将shadowsocks转换为HTTP代理

时间:2017-04-13 10:30:37

标签: proxy http-proxy socks polipo

我的ssserver由docker image oddrationale/docker-shadowsocks启动:

if (index > 0) {
    shakSuite = 1;
}

然后我使用docker run -d -p 1984:1984 oddrationale/docker-shadowsocks -s 0.0.0.0 -p 1984 -k paaassswwword -m aes-256-cfb 命令获取本地代理。

sslocal

sslocal -c /etc/shadowsocks.json -d start --pid-file /data/tmp/sslocal.pid --log-file /data/tmp/sslocal.log 是这样的:

/etc/shadowsocks.json

我使用{ "server":"127.0.0.1", "server_port":1984, "local_address": "127.0.0.1", "local_port":1080, "password":"paaassswwword", "timeout":600, "method":"aes-256-cfb" } 将shadowsocks转换为http代理,我的polipo是:

/etc/polipo/config

我编辑iptables规则以使端口8123可以被访问。我可以在浏览器中访问proxyAddress = 0.0.0.0 socksProxyType = socks5 socksParentProxy = 127.0.0.1:1080 daemonise = true pidFile = /data/tmp/polipo.pid logFile = /data/tmp/polipo.log ,代理看起来有效:

http://host:8123

输出如下:

http_proxy=http://host:8123 curl -v google.com 

该命令并不总是成功运行,有时我会收到以下错误:

* Rebuilt URL to: google.com/
*   Trying host...
* Connected to host (host) port 8123 (#0)
> GET HTTP://google.com/ HTTP/1.1
> Host: google.com
> User-Agent: curl/7.43.0
> Accept: */*
> Proxy-Connection: Keep-Alive
> 
< HTTP/1.1 302 Found
< Content-Length: 262
< Date: Thu, 13 Apr 2017 09:52:34 GMT
< Cache-Control: private
< Content-Type: text/html; charset=UTF-8
< Referrer-Policy: no-referrer
< Location: http://www.google.com.sg/?gfe_rd=cr&ei=YkrvWPnOM-XLugTRgZDQBA
< Connection: keep-alive
< 
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com.sg/?gfe_rd=cr&amp;ei=YkrvWPnOM-XLugTRgZDQBA">here</A>.
</BODY></HTML>
* Connection #0 to host host left intact

* Rebuilt URL to: google.com/ * Trying host... * Connected to host (host) port 8123 (#0) > GET HTTP://google.com/ HTTP/1.1 > Host: google.com > User-Agent: curl/7.43.0 > Accept: */* > Proxy-Connection: Keep-Alive > * Recv failure: Connection reset by peer * Closing connection 0 curl: (56) Recv failure: Connection reset by peer 的输出是:

netstat -tlnp

我真的找不到原因,谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

google使用https,而不是http,请尝试

https_proxy=http://host:8123 curl -v https://www.google.com