/open_proxy_pool

一个灵活的代理池服务。

Primary LanguagePython

概述

这是一个灵活的代理池服务。它提供两种代理使用方法:使用http接口提取随机可用ip,和使用squid3做动态代理转发。

1.使用squid

此种情况下,所有请求通过squid进行转发,不需要用户手动切换ip。

使用方法:

  • 设置代理ip为代理池主机地址:3128(默认端口3128,可在squid.conf中进行修改),根据请求类型添加https或http前缀。

优点:

  • 使用简单,设置好固定的代理ip即可,随机的代理切换对用户是透明的。

缺点:

  • 1.https下的squid负载均衡存在一定问题,没法充分利用代理资源(我试了很多方法,都无法在https下生效,但在http下是正常的。大佬们如果发现某种方法有效,劳烦告知,感激!)。
  • 2.当squid重新加载配置文件时存在很短时间的中断期,此时代理无法正常使用。
  • 3.请求将被squid服务转发,此过程会占用squid所在的服务器资源。

2.使用http接口

此种情况下,需要先访问http接口获取一个随机代理ip,然后使用这个代理ip进行网络访问。

使用方法:

  • 1.访问http://代理池主机地址:9102/random/(端口可在settings.py中修改),将返回一个代理ip,形如username:password@59.174.116.74:29687(使用密码访问)或59.174.116.74:29687(不使用密码访问)。
  • 2.根据请求类型,为代理加上https或http前缀。
  • 3.设置使用此代理ip进行网络请求。

优点:

  • 1.http接口一直可用,不存在中断期。
  • 2.不需要squid做中转,请求直接交给目标代理,并直接从目标代理获取数据,速度更快,可靠性更高。
  • 3.每次随机获取ip,负载基本均衡。

缺点:

  • 1.需要用户控制代理ip的切换,相较于squid来说麻烦一点。
  • 2.每次发起请求时都需要额外请求一次http接口,增加了额外的耗时。

运行说明

  1. clone项目到目标服务器。
  2. 进入项目根目录。
  3. 安装requirements.txt中的相关依赖。
  4. 修改settings.py中的配置信息。
  5. 站大爷用户请替换get_ip.py脚本中提取api,其他用户需要修改代码,参考get_ip.py的代码做细节调整即可,整体逻辑都是相通的。
  6. 使用python3 scheduler.py一键开启各个服务。建议使用screen或其他工具使程序后台运行。

补充说明

代理依赖于站大爷代理服务,需要定期给站大爷续费才能保证代理服务正常运行。 使用站大爷代理服务,是因为它提供了密码访问模式,不再限定使用代理的主机ip,这一点挺不错的。不过它的代理质量很一般。

TODO:

  • 抽象的力度还是有些不足,后面有时间的话再做改进。