用于链接 HTTP->SOCKS5 代理的简单单行解决方案

Simple, one-liner solution to chain HTTP->SOCKS5 proxy

本文关键字:代理 简单 单行 解决方案 SOCKS5 链接 HTTP- gt 用于      更新时间:2023-10-16

我们使用本地TOR代理运行许多并行抓取器。所以这里有一个SOCKS5代理的列表,总共大约200个:

socks5://localhost:端口socks5://localhost:端口2socks5://localhost:端口3…

一些软件不能与SOCKS一起工作,只能与HTTP代理一起工作。所以我们需要运行一些软件来作为HTTP代理,但是会将请求重定向到SOCKS代理。

一个传统的答案是使用PolipoVidalia,但它们都需要配置,如果你想运行200个实例,你必须处理200个配置文件,这不是那么简单。

另一个解决方案,如MITM代理 (Python)是好的,但它太慢了,占用了太多的RAM(只需将每个脚本乘以200 -即使一个脚本占用了30兆,那么它将变成6兆的RAM)。

Proxychains是可以的,但它仍然需要为每个实例配置文件。

一个delegate程序是正常的,但是由于一些奇怪的原因它停止了工作——它拒绝接收连接并返回类似于"检测到入侵尝试,将停止"的东西——重新启动没有帮助。它是在本地接口上运行的,web服务是正常的,没有被黑客攻击——所以这种行为真的很奇怪。

所以我们在寻找像delegate这样的东西,但是更可靠,没有错误。小的,快的,最好用C c++写的东西。

或者-任何脚本语言的任何软件解决方案(但它应该是快速和内存精明的)。

我不是一个C程序员,所以如果你要给我一些C语言代理代码的"例子"——它不会工作,它将花费我一天的时间来进入代码,编译它并运行。不幸的是=)

谢谢!

Polipo不需要配置文件-它可以从命令行读取其配置。因此,从shell脚本中运行200 polipi是一件很容易的事情:

for ((i = 0; i < 100; i++)); do
    polipo deamonize=true diskCacheRoot='' proxyPort=$((i + 8100)) socksParentProxy=$(host$i) pidFile="/var/run/polipo$i.pid"
done

请注意,上面禁用了磁盘上的缓存-不支持在多个Polipo实例之间共享单个磁盘缓存-您应该询问Polipo -users邮件列表是否需要此功能。

Polipo可以配置为只在几兆内存中运行(检查chunkHighMark变量),因此运行200个实例应该不是问题。