All Projects → awolfly9 → Ipproxytool

awolfly9 / Ipproxytool

Licence: mit
python ip proxy tool scrapy crawl. 抓取大量免费代理 ip,提取有效 ip 使用

Programming Languages

python
139335 projects - #7 most used programming language
Dockerfile
14818 projects

Projects that are alternatives of or similar to Ipproxytool

Cls Proxify
Logging on steroids with CLS and Proxy. Integrated with express, koa, fastify.
Stars: ✭ 132 (-92.77%)
Mutual labels:  proxy
Designpatterns
🔑Elements of Reusable Object-Oriented Software🔓is a software engineering book describing software design patterns. The book's authors are Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides with a foreword by Grady Booch.
Stars: ✭ 134 (-92.66%)
Mutual labels:  proxy
Proxy Wasm Rust Sdk
WebAssembly for Proxies (Rust SDK)
Stars: ✭ 137 (-92.5%)
Mutual labels:  proxy
Mtproto
Telegram MTProto and its proxy (over gRPC) in Go (golang). API Layer: 71
Stars: ✭ 133 (-92.72%)
Mutual labels:  proxy
Proxyscrape
Python library for retrieving free proxies (HTTP, HTTPS, SOCKS4, SOCKS5).
Stars: ✭ 134 (-92.66%)
Mutual labels:  proxy
Leiter
一个基于 NEKit 的网络 Proxy App。
Stars: ✭ 137 (-92.5%)
Mutual labels:  proxy
Zan Proxy
An extensible proxy for PC/Mobile/APP developer
Stars: ✭ 1,727 (-5.42%)
Mutual labels:  proxy
Proxy Wasm Go Sdk
Go SDK for WebAssembly-based Envoy extensions
Stars: ✭ 137 (-92.5%)
Mutual labels:  proxy
Shadowrocket Adblock Rules
提供多款 Shadowrocket 规则,带广告过滤功能。用于 iOS 未越狱设备选择性地自动翻墙。
Stars: ✭ 12,447 (+581.65%)
Mutual labels:  proxy
Shadowsocks Cloak Installer
A one-key script to setup Cloak plugin with Shadowsocks on your server
Stars: ✭ 138 (-92.44%)
Mutual labels:  proxy
Bandwidth Hero Proxy
⚡️ Proxy that compresses images to low-resolution
Stars: ✭ 130 (-92.88%)
Mutual labels:  proxy
Php Http Proxy
HTTP proxy written in PHP based on workerman.
Stars: ✭ 134 (-92.66%)
Mutual labels:  proxy
Bhadoo Cloud
Directly Upload to Google Drive from Torrent or URLs
Stars: ✭ 136 (-92.55%)
Mutual labels:  proxy
Chucker
🔎 An HTTP inspector for Android & OkHTTP (like Charles but on device)
Stars: ✭ 2,169 (+18.78%)
Mutual labels:  proxy
Hoverfly
Lightweight service virtualization/API simulation tool for developers and testers
Stars: ✭ 1,814 (-0.66%)
Mutual labels:  proxy
Hoverfly Java
Java binding for Hoverfly
Stars: ✭ 130 (-92.88%)
Mutual labels:  proxy
V2ray Panel Master
Deprecated
Stars: ✭ 136 (-92.55%)
Mutual labels:  proxy
Bouncer Proxy
👮🏻🛰 Ethereum identity proxy contract that bounces meta transactions of etherless accounts.
Stars: ✭ 142 (-92.22%)
Mutual labels:  proxy
Tinyfecvpn
A VPN Designed for Lossy Links, with Build-in Forward Error Correction(FEC) Support. Improves your Network Quality on a High-latency Lossy Link.
Stars: ✭ 1,842 (+0.88%)
Mutual labels:  proxy
Rtty
Access your terminal from anywhere via the web.
Stars: ✭ 2,434 (+33.3%)
Mutual labels:  proxy

IPProxyTool

使用 scrapy 爬虫抓取代理网站,获取大量的免费代理 ip。过滤出所有可用的 ip,存入数据库以备使用。 可以访问我的个人站点,查看我的更多有趣项目 西瓜

感谢 youngjeff 和我一起维护该项目

运行环境

安装 python3 and mysql 数据库

cryptography模块安装环境:

sudo yum install gcc libffi-devel python-devel openssl-devel
$ pip install -r requirements.txt

下载使用

将项目克隆到本地

$ git clone https://github.com/awolfly9/IPProxyTool.git

进入工程目录

$ cd IPProxyTool

修改 mysql 数据库配置 config.py 中 database_config 的用户名和密码为数据库的用户名和密码

$ vim config.py
---------------

database_config = {
	'host': 'localhost',
	'port': 3306,
	'user': 'root',
	'password': '123456',
	'charset': 'utf8',
}

MYSQL: 导入数据表结构

$ mysql> create database ipproxy;
Query OK, 1 row affected (0.00 sec)
$ mysql> use ipproxy;
Database changed
$ mysql> source '/你的项目目录/db.sql'

运行启动脚本 ipproxytool.py 也可以分别运行抓取,验证,服务器接口脚本,运行方法参考项目说明

$ python ipproxytool.py 

新增异步验证方式,运行方法如下

$ python ipproxytool.py async

项目说明

抓取代理网站

所有抓取代理网站的代码都在 proxy

扩展抓取其他的代理网站

1.在 proxy 目录下新建脚本并继承自 BaseSpider
2.设置 name、urls、headers
3.重写 parse_page 方法,提取代理数据
4.将数据存入数据库 具体可以参考 ip181 kuaidaili
5.如果需要抓取特别复杂的代理网站,可以参考peuland

修改 run_crawl_proxy.py 导入抓取库,添加到抓取队列

可以单独运行 run_crawl_proxy.py 脚本开始抓取代理网站

$ python run_crawl_proxy.py

验证代理 ip 是否有效

目前验证方式:
1.从上一步抓取并存储的数据库中取出所有的代理 IP
2.利用取出的代理 IP 去请求 httpbin
3.根据请求结果判断出代理 IP 的有效性,是否支持 HTTPS 以及匿名度,并存储到表 httpbin 中
4.从 httpbin 表中取出代理去访问目标网站,例如 豆瓣
5.如果请求在合适的时间返回成功的数据,则认为这个代理 IP 有效。并且存入相应的表中

一个目标网站对应一个脚本,所有验证代理 ip 的代码都在 validator

扩展验证其他网站

1.在 validator 目录下新建脚本并继承 Validator
2.设置 name、timeout、urls、headers
3.然后调用 init 方法,可以参考 baidu douban
4.如果需要特别复杂的验证方式,可以参考 assetstore

修改 run_validator.py 导入验证库,添加到验证队列

可以单独运行 run_validator.py 开始验证代理ip的有效性

$ python run_validator.py

获取代理 ip 数据服务器接口

在 config.py 中修改启动服务器端口配置 data_port,默认为 8000 启动服务器

$ python run_server.py

服务器提供接口

获取

http://127.0.0.1:8000/select?name=httpbin&anonymity=1&https=yes&order=id&sort=desc&count=100

参数

Name Type Description must
name str 数据库名称
anonymity int 1:高匿 2:匿名 3:透明
https str https:yes http:no
order str table 字段
sort str asc 升序,desc 降序
count int 获取代理数量,默认 100

删除

http://127.0.0.1:8000/delete?name=httpbin&ip=27.197.144.181

参数

Name Type Description 是否必须
name str 数据库名称
ip str 需要删除的 ip

插入

http://127.0.0.1:8000/insert?name=httpbin&ip=555.22.22.55&port=335&country=%E4%B8%AD%E5%9B%BD&anonymity=1&https=yes&speed=5&source=100

参数

Name Type Description 是否必须
name str 数据库名称
ip str ip 地址
port str 端口
country str 国家
anonymity int 1:高匿,2:匿名,3:透明
https str yes:https,no:http
speed float 访问速度
source str ip 来源

TODO

参考

项目更新

-----------------------------2020-12-29----------------------------

  1. 修改之前错误的路径命名
  2. 修改mysql 表结构

-----------------------------2017-6-23----------------------------
1.python2 -> python3
2.web.py -> flask

-----------------------------2017-5-17----------------------------
1.本系统在原来的基础上加入了docker。操作见下方,关于docker的相关知识可以上官网看看http://www.docker.com.

-----------------------------2017-3-30----------------------------
1.修改完善 readme
2.数据插入支持事务

-----------------------------2017-3-14----------------------------
1.更改服务器接口,添加排序方式
2.添加多进程方式验证代理 ip 的有效性

-----------------------------2017-2-20----------------------------
1.添加服务器获取接口更多筛选条件

-----------------------------2017-2-16----------------------------
1.验证代理 IP 的匿名度
2.验证代理 IP HTTPS 支持
3.添加 httpbin 验证并发数设置,默认为 4

在系统中安装docker就可以使用本程序:

下载本程序

git clone https://github.com/awolfly9/IPProxyTool

然后进入目录:

cd IPProxyTool

创建镜像:

docker build -t proxy .

运行容器:

docker run -it proxy

在config.py中按照自己的需求修改配置信息

database_config = {
    'host': 'localhost',
    'port': 3306,
    'user': 'root',
    'password': 'root',
    'charset': 'utf8',
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].