GithubHelp home page GithubHelp logo

mod94 / ipproxytool Goto Github PK

View Code? Open in Web Editor NEW

This project forked from zzwlpx/ipproxytool

0.0 0.0 0.0 258 KB

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

License: MIT License

Dockerfile 0.21% Python 99.79%

ipproxytool's Introduction

IPProxyTool

Используйте Scrapy Cracker для сканирования прокси-сайтов и получения большого количества бесплатных IP-адресов прокси. Отфильтруйте все доступные IP-адреса и сохраните их в базе данных для дальнейшего использования. Вы можете ознакомиться с другими моими интересными проектами, посетив мой личный сайт awolfly9.

Спасибо YoungJeff за поддержку этого проекта вместе со мной.

Рабочая среда

Установите базу данных Python3 и MySQL.

среда установки модуля шифрования:

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

Измените имя пользователя и пароль базы данных_config в конфигурации базы данных 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.Создайте новый скрипт в каталоге прокси и наследуйте его от 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

参考

项目更新

-----------------------------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',
}

ipproxytool's People

Contributors

awolfly9 avatar xiaxia47 avatar youngjeff avatar mod94 avatar lxtluck avatar mrkang avatar kunkgg avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.