poxy是用python3.4写的.用于抓取代理IP.
它有比较强的扩展能力.代理获取规则是通过配置文件定制的.
命令行帮助:
-h, --help 显示帮助并退出.
-o [OUT], --out [OUT] 将捕获的代理ip放到指定的文件里.没有指定文件将在stdout屏幕输出.
-f [FORMAT], --format [FORMAT] 捕获的ip,端口的输出格式:默认为"{0}:{1}\n".其中{0}是在pattern中捕获的第一个符合的group.以此类推.
--check 检查代理ip的可用性.
--target [TARGET] 指定用于检查代理的url. 默认检查的网址为:https://github.com
--config [CONFIG] 代理捕获的行为规则文件 默认: proxy.settings
默认配置文件中,我加了4个代理ip的网站,分别是:
www.youdaili.net,www.haodailiip.com,www.xici.net.co,www.google-proxy.net.
自己可以加入新的代理获取规则.
由于是通过规则获取代理的,所以总是可以获取到最新的代理ip.
使用默认代理获取规则,可以获取1000左右的代理ip.
2.获取代理的行为规则配制文件: 具体看帮助文件.
最新的版本可以在github上下载:
https://github.com/yufengzjj/poxy.git
一个简单使用示例:
用于获取支持www.google.com.hk访问的代理IP......大概有100左右可用的代理IP.
要想获取更多,自己写一下配置规则即可.具体看帮助文件.
关于配置规则的说明,先看doc文件夹下面的帮助.
这里给一个简单例子:
假设一个完整的规则配置文件poxy.settings:
//----------------------------------------------------
{
"xici"://配置名称
{
"base_url"://数据网页,不是最简单形式时是递归定义的,也可以直接写成"base_url":["http://www.xici.net.co/nn/"]这样的形式,但是功能会弱很多.
{
"base_url":["http://www.xici.net.co"],//基本网址
"selector": ["ul#nav > li > a"],
"sequence": [1,2],//在上面的selector的定位和container_attr(优先于pattern,因此这里pattern可省略)的选择下,有多个结果,1和2表示选取结果中的其中两个网址:
// 即(不用管是否是相对网址)http://www.xici.net.co/nn/,http://www.xici.net.co/nt/,
//也就是国内高匿代{过}{滤}理和国内普通代{过}{滤}理.
"pattern": ["href=\"([^\\s]+)\""],
"container_attr":["href"]
},
"selector":["table#ip_list > tr"],//在上面的选择下,base_url的结果会是"base_url":["http://www.xici.net.co/nn/","http://www.xici.net.co/nt/"]
"pattern":["([\\d]+\\.[\\d]+\\.[\\d]+\\.[\\d]+)[^\\d]+([\\d]+)"]//再综合selector的定位和pattern对ip地址的捕获,获得需要的代{过}{滤}理IP.
}
}
//----------------------------------------------------------
工作行为类似于爬虫,即给定一个基础网页,通过一定的规则自己爬取中间网页,最后对最终网页数据进行捕获.
其中爬取规则是递归定义的.
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)