阿布云

你所需要的,不仅仅是一个好用的代理。

突破反爬虫的利器:开源IP代理池

阿布云 发表于

突破反爬虫的一个常用做法是使用代理IP,可以是作为初学者或者个人来说,买一些代理ip成本稍微高一些,因此最近写了一个开源项目IPProxys,用来为个人提供代理ip。

IPProxys原理:通过爬取各大代理网站提供的免费IP,进行去重,并验证ip的可用性,将有效的ip存储到sqlite中,并提供一个HTTP接口供爬虫程序获取ip。

IPProxys项目已经上传到github中,链接为/qiyeboy/IPProxys。下面对整个项目工程进行一下说明,如下图所示:

api包:主要是实现http服务器,提供api接口(通过get请求,返回json数据)

data文件夹:主要是数据库文件的存储位置和qqwry.dat(可以查询ip的地理位置)

db包:主要是封装了一些数据库的操作

spider包:主要是爬虫的核心功能,爬取代理网站上的代理ip

test包:测试一些用例,不参与整个项目的运行

util包:提供一些工具类。查询ip的地理位置

validator包:用来测试ip地址是否可用

:主要是配置信息(包括配置ip地址的解析方式和数据库的配置)

整个项目的代码量不大,大家可以根据自己的需求进行修改,也可以提出自己的想法和建议帮助我改进这个项目。

如何使用IPProxys项目呢?

1.将项目目录clone到当前文件夹 $gitclone

2.切换工程目录 $cdIPProxys

3.运行脚本  windows上运行效果如下图所示:

项目依赖项:

需要安装sqlite数据库

安装requests库:pipinstallrequests

安装lxml:apt-getinstallpython-lxml

当IPProxys运行起来后,外部的爬虫如何获取ip呢?        外部的爬虫只需要向IPProxys所在主机的8000端口发送GET请求即可。GET请求的参数为:

访问http://127.0.0.1:8000/?types=0&count=5&country=中国这个链接的含义是获取5个ip地址在中国的高匿代理。

响应为JSON格式,返回数据为:

{"ip":"220.160.22.115","port":80},

{"ip":"183.129.151.130","port":80},

{"ip":"59.52.243.88","port":80},

{"ip":"112.228.35.24","port":8888},

{"ip":"106.75.176.4","port":80}

一般爬取到的有效ip大约有60个左右,基本上满足个人的需要。

在公众号(Crossin的编程教室)回复“代理”获取项目下载地址。

Python中文社区

致力于成为

国内最好的Python社区

【码上行动-零基础Python入门】

课程开放中,回复“课程”了解详情或后台咨询

近期文章推荐阅读:

数据分析:当赵雷唱民谣时他唱些什么?

Python爬虫爬取美剧网站

如何用GUI提高python程序的颜值?

个人开发者如何申请微信小程序

还你系统空间的Python小程序

今天,你抢到票了吗?

爆款游戏《贪吃蛇大作战》的Python实现

简单三步,用Python发邮件

Python-Excel模块哪家强?

想用Python做数据分析?先玩玩这个再说

用Python实现你的量化交易策略