Skip to content

Python编写的HTTP代理池,集成WEB管理界面,无外部数据库依赖,可直接运行,兼容Windows,Linux和macOS。Free Proxy Pool with Web UI on Windows, Linux, and macOS.

License

Notifications You must be signed in to change notification settings

Crazy-FuQing/ProxyPoolWithUI

 
 

Repository files navigation

简易好用的免费代理池

兼容系统: Windows Linux MacOS

  • 定时自动爬取网络上的免费代理
  • 定时对代理进行验证,集成API随时返回可用代理
  • 不需要第三方数据库支持,一键启动,简单易用
  • 集成WEB管理界面,方便查看代理状态并对代理池进行配置
  • 拥有详细的注释,可以非常方便地学习或修改

todo

  • 存储方式改用mysql
  • 数据库增加代理位置字段

推荐:

项目Demo:http://chenyu0x00.com:8888/ 已失效

2021年3月8日测试,项目运行半小时后,支持访问HTTPS的代理有40+,支持访问HTTP的代理有100+。

如果你知道有好用的代理源,或者是发现本项目存在一些问题,欢迎通过Issues和我们讨论。

WEB管理界面截图

screenshot1 screenshot2

已经集成的免费代理源

名称 地址 备注
云代理 http://www.ip3366.net/ 正常
89免费代理 https://www.89ip.cn/ 正常
开心代理 http://www.kxdaili.com/ 正常
ProxyList https://www.proxy-list.download/ 正常
ProxyScrape https://proxyscrape.com/ 正常
proxydb.net https://proxydb.net/?protocol=https&protocol=http&protocol=socks5&protocol=socks4&anonlvl=4&anonlvl=3&anonlvl=2&anonlvl=1 有反爬
站大爷 https://www.zdaye.com/free/2/ 有反爬
66代理 http://www.66ip.cn/ 已修复
快代理 https://www.kuaidaili.com/ 已失效 有waf
悠悠网络代理 https://uu-proxy.com/ 已失效
全网代理 http://www.goubanjia.com/ 已失效
免费代理库 https://ip.jiangxianli.com/ 已失效
小幻HTTP代理 https://ip.ihuan.me/ 已失效
ProxyScan https://www.proxyscan.io/ 已失效
西拉代理 http://www.xiladaili.com/ 已失效
小舒代理 http://www.xsdaili.cn/ 已失效
泥马代理 http://www.nimadaili.com/ 已失效
openproxylist.xyz https://openproxylist.xyz/ 待实现 备注txt
芝麻代理 https://free.zmhttp.com/1/ 待实现
free-proxy.cz http://free-proxy.cz/en/proxylist/country/all/all/ping/all 待实现
敲代码代理IP https://ip.uqidata.com/free/index.html 待实现
69ip https://www.69ip.cn/?page=3 待实现
齐云代理 https://proxy.ip3366.net/free/ 待实现
冰凌代理 https://www.binglx.cn/ 待实现
太阳HTTP http://ip.tyhttp.com/ 待实现
hidemy.io https://hidemy.io/cn/proxy-list/?maxtime=200&start=64#list 待实现

运行本项目

本项目目前只适配了Python3,请确保你的电脑上安装了3.6或更高版本的Python软件。

  1. 下载代码
git clone https://github.com/OxOOo/ProxyPoolWithUI.git
  1. 安装Python依赖(在ProxyPoolWithUI目录下执行)
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
  1. 启动(在ProxyPoolWithUI目录下执行)
python3 main.py

如果你在运行了上述命令之后,在命令行中看到了类似如下截图,那么说明项目成功启动了:

term

  1. 使用浏览器打开http://localhost:5000,可以看到WEB管理界面。

Docker构建项目

  1. 下载项目文件
git clone https://github.com/OxOOo/ProxyPoolWithUI.git
cd ProxyPoolWithUI
  1. 构建docker镜像
docker build --tag proxy_pool .
  1. 运行镜像
docker run -p 5000:5000 -v /root/ProxyPoolWithUI:/proxy -d proxy_pool

/root/ProxyPoolWithUI为clone下来的项目目录路径,请自行更改

使用代理

  1. API接口

项目启动之后,会自动爬取并检测代理是否可用,因此我们只需要关注如何使用代理即可。

方法 请求模式 作用 返回值
/ping GET 可用于测试API状态 'APIOK'
/fetch_random GET 随机获取一个可用代理,如果没有可用代理则返回空白 '{p.protocol}://{p.ip}:{p.port}'
/fetch_http GET 获取协议为http的一条结果 '{p.protocol}://{p.ip}:{p.port}'
/fetch_http_all GET 获取协议为http的全部结果 '{p.protocol}://{p.ip}:{p.port}'
/fetch_https GET 获取协议为https的一条结果 '{p.protocol}://{p.ip}:{p.port}'
/fetch_https_all GET 获取协议为https的全部结果 '{p.protocol}://{p.ip}:{p.port}'
/fetch_socks4 GET 获取协议为socks4的一条结果 '{p.protocol}://{p.ip}:{p.port}'
/fetch_socks4_all GET 获取协议为socks4的全部结果 '{p.protocol}://{p.ip}:{p.port}'
/fetch_socks5 GET 获取协议为socks5的一条结果 '{p.protocol}://{p.ip}:{p.port}'
/fetch_all GET 获取所有可用代理,如果没有可用代理则返回空白 [('http','127.0.0.1',8080),('http','127.0.0.1',1234)]
/fetch_socks5_all GET 获取协议为socks5的全部结果 '{p.protocol}://{p.ip}:{p.port}'
  1. http://localhost:5000/fetch_random : 随机获取一个可用代理,如果没有可用代理则返回空白

返回示例 : http://127.0.0.1:8080

  1. http://localhost:5000/fetch_all : 获取所有可用代理,如果没有可用代理则返回空白

返回示例 : http://127.0.0.1:8080,http://127.0.0.1:8081

使用代理

不同语言使用代理的方式各不相同,这里提供一个Python集成本项目并使用代理的示例代码:

# encoding : utf-8

import requests

def main():
    proxy_uri = requests.get('http://localhost:5000/fetch_random').text
    if len(proxy_uri) == 0:
        print(u'暂时没有可用代理')
        return
    print(u'获取到的代理是:' + proxy_uri)
    
    proxies = { 'http': proxy_uri }
    html = requests.get('http://www.baidu.com', proxies=proxies).text
    if u'百度一下,你就知道' in html:
        print('代理可用')
    else:
        print('代理不可用')

if __name__ == '__main__':
    main()

配置

如果是需要禁用或者启用某些代理,可直接在WEB管理界面进行操作。

本项目的大部分配置均可在config.py中找到,默认配置已经可以适应绝大部分情况,一般来说不需要进行修改。

添加新的代理源

本项目的爬取器均在fetchers目录下,你也可以根据自己的需求对其中的爬取器进行修改或者扩展。

编写本项目的爬取器并不复杂,详细的操作步骤可见此处,可以参考fetchers目录下已有的爬取器。

项目工作流程图

本项目主要包含三部分:

  1. 爬取进程:主要包括fetchers目录和proc/run_fetcher.py文件
  2. 验证进程:主要在proc/run_validator.py文件中
  3. WEB与API:在api目录下

本项目的大致逻辑图如下:

注:为了便于理解与画图,下图的逻辑是经过简化之后的逻辑,详细过程可查看代码以及相应的注释。

workflow

验证算法相关

  1. 如何验证代理可用

目前验证代理可用的算法较为简单,核心思想是使用requests库访问一个指定网页,查看是否访问成功。

相关配置参数(包括超时时间尝试次数等)可在config.py中找到,具体代码逻辑在proc/run_validator.py中。

  1. 什么时候该验证哪个代理

这个问题比较复杂,很难有一个完美的解决方案,因此目前的算法较为简单,勉强可用,可在db目录下找到对于目前算法的说明。

如果你有更好的算法,欢迎通过Issues和我们讨论,也可以根据db目录下的README文件对代码进行修改。

About

Python编写的HTTP代理池,集成WEB管理界面,无外部数据库依赖,可直接运行,兼容Windows,Linux和macOS。Free Proxy Pool with Web UI on Windows, Linux, and macOS.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HTML 91.5%
  • Python 6.8%
  • Vue 1.3%
  • Other 0.4%