将HTTP请求转换为SOCKS5


46

我目前正在使用TOR做一些测试工作,遇到了一个小问题。Tor的客户端仅支持通过SOCKS5协议接收连接,但是我正在使用的应用程序仅支持HTTP代理协议。

是否可以在中间放置一些东西?这样就可以了。

我的程序(仅HTTP)> HTTP到SOCKS转换器> Tor SOCKS5服务器


您可以使用一个操作系统(例如Tails和Whonix)通过Tor透明地路由所有流量,而该应用程序根本不需要支持代理。这也大大降低了DNS泄漏和其他Tor绕过的风险。
CodesInChaos

Answers:


44

看起来DeleGate可以执行此操作,如下所示(DeleGate将在端口8080上接受HTTP连接并转发到端口9050上的SOCKS服务器):

delegated -P8080 SERVER=http SOCKS=localhost:9050

@ Dboy1612:您能介绍一下此用例的委派经验。我也有相同的用例。
pradeepchhetri 2014年

这是一个很棒的工具。最近发布了新版本(v9.9.9)。
kev

1
知道为什么在下载和安装过程中需要一个电子邮件地址吗?
HalilÖzgür2014年

2
@pradeepchhetri在玩了一天之后delegate(d),我得出结论,即使配置文档中有许多相反的说法,也绝对确定要泄漏DNS请求。我很想发现自己对此有误,但对此我感到悲观。
亚当·麦克勒

效果非常好

9

Tor捆绑包不再具有polipo,这是来自官方的Tor常见问题解答

过去,Tor捆绑包包含一个HTTP代理(例如Privoxy或Polipo),只是为了解决Firefox中的一个错误,该错误最终在Firefox 6中得到了修复。现在,您不需要单独的HTTP代理即可使用Tor,而实际上也无需使用令您更加安全,因为Torbutton可以更好地控制Firefox与网站的交互。

如果您尝试将某些外部应用程序与Tor一起使用,则第零步应该是重新读取警告集,以解决问题。第一步应该是尝试使用Socks代理而不是http代理-Tor在Windows的9050端口上运行Socks代理,或者 在OSX和Linux上参见上文

如果失败,请随时安装privoxy。但是,请意识到,不建议新手使用此方法。Privoxy具有Tor和Privoxy的示例配置。


1
它对我有用tnx!
Hikari

7

您也可以使用Privoxy。将此行添加到其config.txt文件中:

forward-socks5 / 127.0.0.1:9050 .

(不要忘了最后的小点。)

然后在以下位置使用HTTP或HTTPS代理: 127.0.0.1:8118


一种很棒且简单的方法。谢谢。就像魅力一样工作
iraj jelodari

5

您未指定操作系统。请以后再这样做。


该答案推荐了Polipo,它由Tor项目托管在Vidalia软件包中,因此很可能被Windows推荐。Polipo也有一个* nix版本(最初是为* nix设计的),所以我提供了有关如何设置它的说明-请参阅下面的第二部分。如果重要的话,这是一个相当轻巧的解决方案。


视窗

下载Vidalia捆绑包。它包括Vidalia GUI和一个名为Polipo的程序以及Tor。在捆绑软件中,默认情况下,Polipo在端口8118上运行HTTP代理,该HTTP代理通过端口9050上的Tor SOCKS代理进行重定向。

进阶设定

也可以在没有Vidalia捆绑包的情况下手动配置Polipo。

取自http://www.pps.jussieu.fr/~jch/software/polipo/tor.html

它们还提供您应下载的二进制文件。

组态

通过在Polipo的配置文件(即纯文本文件)中设置多个配置变量来配置Polipo。为了告诉Polipo使用tor而不是将任何已提取的页面缓存在磁盘上,您需要在配置文件中添加以下几行:

socksParentProxy = localhost:9050
diskCacheRoot=""

您还需要禁用本地配置界面,以保护自己免受浏览器漏洞的影响:

disableLocalInterface=true

运行它

运行Polipo时,应使用Polipo命令行上的-c标志指定配置文件的位置:

> polipo.exe -c "/Program Files/Polipo/config.txt"

请注意,即使在Windows下,您也必须使用Unix语法作为文件名(使用正斜杠),并且不能指定要使用的设备(“驱动器”)。

Polipo的默认侦听端口为8123。

Vidalia软件包中的默认配置包含在此答案的底部。


*尼克斯

包括Linux,Unix,BSD,OS X,大多数不基于NT的主要现代(2012)操作系统(Windows)。

再次取自http://www.pps.jussieu.fr/~jch/software/polipo/tor.html

从您使用的任何存储库下载软件包。Google可能会在这里提供帮助。或者,可以下载直接二进制文件。

组态

通过在Polipo的配置文件中设置多个配置变量(可以是~/.polipo/etc/polipo/config,以存在的方式为准)来配置Polipo 。为了告诉Polipo使用tor而不是将任何已提取的页面缓存在磁盘上,您需要在配置文件中添加以下几行:

socksParentProxy = localhost:9050
diskCacheRoot=""

您还需要禁用本地配置界面,以保护自己免受浏览器漏洞的影响:

disableLocalInterface=true

如果要为配置文件指定其他位置,则可以使用Polipo命令行上的-c标志来指定它。

请注意,如果从发行版提供的二进制文件安装Polipo,则可能不会考虑〜/ .polipo -您需要编辑/ etc / polipo / config。

运行它

如果您从发行版提供的软件包中安装了Polipo,则Polipo可能已经在运行。您将需要重新启动它,以便将其新配置考虑在内。否则,只需获取一个免费的终端窗​​口并输入:

$ polipo

如果您将非标准位置用于Polipo的配置文件,请在命令行上指定它,例如:

$ polipo -c "/Program Files/Polipo/config.txt"

Polipo的默认侦听端口为8123。

Vidalia软件包中的默认配置包含在此答案的底部。


默认Polipo配置(Vidalia捆绑包)

这是Windows的Vidalia捆绑包中的默认Polipo配置。从它的外观来看,它也应该在* nix中工作-据我所知,没有平台特定。是的,它是一个IPv4配置。

### $Id$
#
### Basic configuration
### *******************

# Uncomment one of these if you want to allow remote clients to
# connect:

# proxyAddress = "::0"        # both IPv4 and IPv6
# proxyAddress = "0.0.0.0"    # IPv4 only

proxyAddress = "127.0.0.1"
proxyPort = 8118

# If you do that, you'll want to restrict the set of hosts allowed to
# connect:

# allowedClients = "127.0.0.1, 134.157.168.57"
# allowedClients = "127.0.0.1, 134.157.168.0/24"

allowedClients = 127.0.0.1
allowedPorts = 1-65535

# Uncomment this if you want your Polipo to identify itself by
# something else than the host name:

proxyName = "localhost"

# Uncomment this if there's only one user using this instance of Polipo:

cacheIsShared = false

# Uncomment this if you want to use a parent proxy:

# parentProxy = "squid.example.org:3128"

# Uncomment this if you want to use a parent SOCKS proxy:

socksParentProxy = "localhost:9050"
socksProxyType = socks5


### Memory
### ******

# Uncomment this if you want Polipo to use a ridiculously small amount
# of memory (a hundred C-64 worth or so):

# chunkHighMark = 819200
# objectHighMark = 128

# Uncomment this if you've got plenty of memory:

# chunkHighMark = 50331648
# objectHighMark = 16384

chunkHighMark = 33554432

### On-disk data
### ************

# Uncomment this if you want to disable the on-disk cache:

diskCacheRoot = ""

# Uncomment this if you want to put the on-disk cache in a
# non-standard location:

# diskCacheRoot = "~/.polipo-cache/"

# Uncomment this if you want to disable the local web server:

localDocumentRoot = ""

# Uncomment this if you want to enable the pages under /polipo/index?
# and /polipo/servers?.  This is a serious privacy leak if your proxy
# is shared.

# disableIndexing = false
# disableServersList = false

disableLocalInterface = true
disableConfiguration = true

### Domain Name System
### ******************

# Uncomment this if you want to contact IPv4 hosts only (and make DNS
# queries somewhat faster):
#
# dnsQueryIPv6 = no

# Uncomment this if you want Polipo to prefer IPv4 to IPv6 for
# double-stack hosts:
#
# dnsQueryIPv6 = reluctantly

# Uncomment this to disable Polipo's DNS resolver and use the system's
# default resolver instead.  If you do that, Polipo will freeze during
# every DNS query:

dnsUseGethostbyname = yes


### HTTP
### ****

# Uncomment this if you want to enable detection of proxy loops.
# This will cause your hostname (or whatever you put into proxyName
# above) to be included in every request:

disableVia = true

# Uncomment this if you want to slightly reduce the amount of
# information that you leak about yourself:

# censoredHeaders = from, accept-language
# censorReferer = maybe

censoredHeaders = from,accept-language,x-pad,link
censorReferer = maybe

# Uncomment this if you're paranoid.  This will break a lot of sites,
# though:

# censoredHeaders = set-cookie, cookie, cookie2, from, accept-language
# censorReferer = true

# Uncomment this if you want to use Poor Man's Multiplexing; increase
# the sizes if you're on a fast line.  They should each amount to a few
# seconds' worth of transfer; if pmmSize is small, you'll want
# pmmFirstSize to be larger.

# Note that PMM is somewhat unreliable.

# pmmFirstSize = 16384
# pmmSize = 8192

# Uncomment this if your user-agent does something reasonable with
# Warning headers (most don't):

# relaxTransparency = maybe

# Uncomment this if you never want to revalidate instances for which
# data is available (this is not a good idea):

# relaxTransparency = yes

# Uncomment this if you have no network:

# proxyOffline = yes

# Uncomment this if you want to avoid revalidating instances with a
# Vary header (this is not a good idea):

# mindlesslyCacheVary = true

# Suggestions from Incognito configuration
maxConnectionAge = 5m
maxConnectionRequests = 120
serverMaxSlots = 8
serverSlots = 2
tunnelAllowedPorts = 1-65535

我在Mac OS X 10.6上使用polipo。有时执行POST请求时似乎有一些问题。Polipo的官方网站在这里这里
小清庞-明日香健治

我也在Windows上使用3proxy。我使用它将我的SSH隧道(SOCKS5)转换为不支持SOCKS的程序的HTTP代理。3proxy由俄罗斯人开发。它是开源的。官方站点位于此处,其SourceForge项目位于此处(未更新为官方站点)。
小清庞-明日香贤治

2

Fiddler还允许从http请求到袜子隧道请求的转换。

我这样做是为了推动一些Windows Update通过袜子连接(通过Amazon EC2和Putty)运行。

在此页面上https://groups.google.com/forum/#!topic/httpfiddler/6m2xEe0fRmw

在Fiddler中,有一个“ FiddlerScript”选项卡,您可以在其中添加以下内容:

使用该X-OverrideGateway标志,使用socks=前缀来指示> Fiddler在与上游服务器对话时应使用SOCKS v4a协议。

例如,TOR安装程序使用端口9150上的名为Polipo的SOCKS代理设置TOR网络的入口点。您可以在FiddlerScript的OnBeforeRequest方法中添加以下内容,以通过TOR网络将任何请求路由到test.example.com :

    if (oSession.HostnameIs("test.example.com")) {
      oSession["x-OverrideGateway"] = "socks=127.0.0.1:9150";    
  }

如果您希望通过SOCKS发送所有流量,则只需X-OverrideGateway为每个会话无条件设置标志即可。


0

WinGate也可以做到这一点。检查WWW代理上的“连接”选项卡,然后可以选择上游SOCKS4,SOCKS4a或HTTP代理。

WinGate还为10个并发用户提供免费许可证。

WWW代理连接选项卡

免责声明:我为Winbate的作者Qbik工作

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.