黑客视频教程免费看
扫码免费看
本章亮点:
-
创建自己的代理池
-
提供批量爬取代理思路 及 方法
-
解决代理利用率低问题 o( ̄▽ ̄)o
这两天想摆脱一阵电脑,所以就赶紧回老家,体验下无忧无虑的田园生活o( ̄┰ ̄*)ゞ。
某次看到群里的小伙伴们
在抱怨渗透某些网站时 自己的IP莫名其妙的就被禁封掉了。
这对刚刚接触渗透测试的新学员来说,挺让人无奈的。
因为这些问题总是无法避免的:
-
没有代理可循。
-
代理可用性低
-
手动单个测试代理IP是否可用(耗时费力)。
-
没有代码功底,不知如何创建代理池
所以,我决定来研究一下如何从0开始创建自己的代理池,
并把我的心得分享给你们,
希望你们在渗透的道路上畅通无阻(记得遵纪守法哦( ̄▽ ̄)”)
先来插一一句话,本篇文章以照顾新手为主,讲的比较慢,大佬们可以直接下滑到底部下载我的源码,进行修改哦~
我刚来到学院的时候听到代理池一词,是完全蒙B的,只能想象到这可能是一个有很多代理IP的东东 总之感觉好复杂好高级的样子。
但是现在我告诉你们,只需要短短几十行代码,你也能创造出属于自己的代理池,是不是内心的恐惧就消失了一半了呢。
我们是基于爬虫基础上进行代理池创建的,
所以我们要对爬虫的节点选择要有一些了解,
并且找到一个或多个提供免费代理的网站
我们是基于爬虫基础上进行代理池创建的
如果对爬虫节点的选择没有了解,也没关系,本章会介绍部分节点选择的方法
一.寻找提供免费代理的网站
因为没钱所以我们要白嫖,因为没钱所以我们还要多写几行代码~
1.百度一下:免费代理(随便选个妃子)
我们看到这个网站还是很友好的,但是我用的是它的友情链接(小幻代理),89代理就留给你们练手吧
2.找到代理网战,我们就要分析他的前端代码,实施虫术,爬取IP和PORT
(1.)确定IP节点:
将鼠标随机放到一个IP上 直接右键->检查 我们就可以找到IP对应的节点了。
(2.)确定PORT节点
方法同上
我们分析一下:
-
<tr>看作祖节点
-
<td>父节点
-
<a>子节点
<tr>节点下有许许多多的子节点<td>,而IP位于第一个<td>节点中的<a>节点中,也就是<tr>节点的孙节点
其中<a>节点有一个target属性 他的值为 “_blank” 这个可以更方便我们去定位此节点
PORT是位于第二个<td>节点上 也就是第一个<td>的兄节点
分析完之后我们就开始构建脚本吧
我们先来调用要用到的模块:
import requests
fro
这两个库没有安装的小伙伴可以先安装一下,我记得安装起来应该挺简单的
为什么不用selenium库呢?
虽然selenium库极其强大,但是用于创建代理池就有点小题大做了,而且运行起来也没有这两个库运行的快,安装起来也比较麻烦一点
然后我们要发送请求,构造Xpath解析对象
我们将这些操作都放到一个函数中去
def get_url():
url ='https://ip.ihuan.me/address/5Lit5Zu9.html?page=b97827cc'
html = requests.get(url).text
html = etree.HTML(html)
这样就够建好了html为解析对象
再根据我们前面分析的节点,用Xpath规则去筛选我们想要的文本:
result = html.xpath('//td[2]/text()')
result2 = html.xpath('//td/a[@target="_blank"]/text()')
//td/a[@target=”_blank”]/text() 选中<td>节点下 target属性为_blank的子节点<a>,text()获取其文本 则result2 = “我们需要的IP”
//td[2]/text() 选择第二个<td>节点,获取文本内容 resul = “端口”
接下来就需要将爬取的内容遍历出来(我是保存到一个txt文本当中):
for a,b in zip(result2,result):
PORT = b
IP = a
DL =(a +':'+b)
with open ('DL.txt','a')as f:
f.write(DL +"n")
DL = “IP”:”PORT” 格式
运行后生成的文本内容为这个样子:
但是这样远远不能满足我们的需求,我们不能只爬取这一页的代理,所以我们要改一下函数,我以前三页为例。
lists =['5crfe930','4ce63706','b97827cc']
def get_url(page):
url ='https://ip.ihuan.me/address/5Lit5Zu9.html?page='+ page
html = requests.get(url).text
html = etree.HTML(html)
result = html.xpath('//td[2]/text()')
result2 = html.xpath('//td/a[@target="_blank"]/text()')
for a,b in zip(result2,result):
PORT = b
IP = a
DL =(a +':'+b)
with open ('DL.txt','a')as f:
f.write(DL +"n")
这里引用了lists列表,简单的循环三次请求,分别请求前三页的网址。因为page后的值被加密了 短时间内很难找到规律。
不过当我们调用动态渲染的话(selenium库)就可以完美解决这个问题了,即可实现无视加密 放肆抓取的效果。
这里我就偷个懒了,0基础的萌新也很难看懂selenium库的使用,
所以为了提高效率 我干脆用这种最直白的方法给你们爬一下。
当我们拥有大量IP代理的时候 我们还要确认这里面有哪些IP可以正常为我们所用。
于是我们还要写一个验证函数:(因为穷,所以要写/(ㄒoㄒ)/~~):
def check(DL):
url ='http://%s'% DL.rstrip()
try:
result = requests.get(url,timeout=5)
print(DL +"代理可用")
except:
print('代理不可用')
这样子就很舒服啦,我们设置一个发送一个请求,
如果请求超时5秒,那么直接回显此代理不可用,
如果5秒内请求成功,那么则证明此代理可用,并且将可用代理回显出来。
这里也可以用状态码(status_code)来进行验证 比较好用,
我嫌麻烦懒得那么写了,
因为并不是只有状态码为[200]的代理可用 其实[400]的也可以用。
最后一步就是写个循环 将用到的函数都循环进去,当然你也可以main()函数,将用到的函数包含进去。
for i in lists:
get_url(i)
with open('DL.txt','r')as F:
Str= F.readlines()
for DL inStr:
check(DL)
将lists中的page遍历到url中去,你列表写的越多,爬取的页面也就越多。
然后我们爬取的代理都会存放到与脚本的同目录下,DL.txt
将代理从文本中遍历到check()函数中去
所以最终的代码是这个样子的:
import requests
from lxml import etree
def get_url(page):
url ='https://ip.ihuan.me/address/5Lit5Zu9.html?page='+ page
html = requests.get(url).text
html = etree.HTML(html)
result = html.xpath('//td[2]/text()')
result2 = html.xpath('//td/a[@target="_blank"]/text()')
for a,b in zip(result2,result):
PORT = b
IP = a
DL =(a +':'+b)
with open ('DL.txt','a')as f:
f.write(DL +"n")
def check(DL):
url ='http://%s'% DL.rstrip()
try:
result = requests.get(url,timeout=5)
print(DL +"可用")
except:
print('不可用')
lists =['5crfe930','4ce63706','b97827cc']
for i in lists:
get_url(i)
with open('DL.txt','r')as F:
Str= F.readlines()
for DL inStr:
check(DL)
然后我们来执行一下:
只要显示出的IP基本都是可以用的 而且还是很快的那种
可用代理有很多,我就截一张图好啦
其实写这个脚本的时候碰到很多的坑 pyquery,bs4,selenium,Xpath这些库我都用过,最后还是筛选出Xpath最适用这个脚本。
而且在遍历的时候也碰到很多的坑,没得老师问 自己尝试 还是挺痛苦的。
幸运的是苦尽甘来,大家在爬取代理的时候可以选择多个代理网站同时爬取,只不过多写两个差不多一样的函数罢了。
以用有时间了 也可以尝试配合代理池写个自动SQL注入给大家呀 ~
这样老师再也不用但心我们找不到漏洞了
PS:写文章好累 分享好快乐
源码有需要,后台回复“源码”即可
黑客视频教程录播+进内部群+黑客工具+攻防靶场
扫下方二维码直接领各资料
扫码免费领资料
(正在为你配置合适的助教)
往期内容回顾
原文始发于微信公众号(白帽子左一):解决ip封禁! 新手也能搭建简单的代理池
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论