解决ip封禁! 新手也能搭建简单的代理池

admin 2022年10月16日00:03:32评论94 views字数 3813阅读12分42秒阅读模式

黑客视频教程免费看

解决ip封禁! 新手也能搭建简单的代理池

扫码免费看


本章亮点:


  • 创建自己的代理池

  • 提供批量爬取代理思路 及 方法

  • 解决代理利用率低问题 o( ̄▽ ̄)o


这两天想摆脱一阵电脑,所以就赶紧回老家,体验下无忧无虑的田园生活o( ̄┰ ̄*)ゞ。


某次看到群里的小伙伴们 


在抱怨渗透某些网站时 自己的IP莫名其妙的就被禁封掉了


这对刚刚接触渗透测试的新学员来说,挺让人无奈的。


因为这些问题总是无法避免的:


  • 没有代理可循。

  • 代理可用性低

  • 手动单个测试代理IP是否可用(耗时费力)。

  • 没有代码功底,不知如何创建代理池


所以,我决定来研究一下如何从0开始创建自己的代理池,


并把我的心得分享给你们,


希望你们在渗透的道路上畅通无阻(记得遵纪守法哦( ̄▽ ̄)”)

解决ip封禁! 新手也能搭建简单的代理池

先来插一一句话,本篇文章以照顾新手为主,讲的比较慢,大佬们可以直接下滑到底部下载我的源码,进行修改哦~

我刚来到学院的时候听到代理池一词,是完全蒙B的,只能想象到这可能是一个有很多代理IP的东东 总之感觉好复杂好高级的样子。


但是现在我告诉你们,只需要短短几十行代码,你也能创造出属于自己的代理池,是不是内心的恐惧就消失了一半了呢。


我们是基于爬虫基础上进行代理池创建的,


所以我们要对爬虫的节点选择要有一些了解,


并且找到一个或多个提供免费代理的网站


我们是基于爬虫基础上进行代理池创建的


如果对爬虫节点的选择没有了解,也没关系,本章会介绍部分节点选择的方法

一.寻找提供免费代理的网站

解决ip封禁! 新手也能搭建简单的代理池

因为没钱所以我们要白嫖,因为没钱所以我们还要多写几行代码~

1.百度一下:免费代理(随便选个妃子)


解决ip封禁! 新手也能搭建简单的代理池

解决ip封禁! 新手也能搭建简单的代理池

我们看到这个网站还是很友好的,但是我用的是它的友情链接(小幻代理),89代理就留给你们练手吧

解决ip封禁! 新手也能搭建简单的代理池

2.找到代理网战,我们就要分析他的前端代码,实施虫术,爬取IP和PORT



(1.)确定IP节点:


将鼠标随机放到一个IP上 直接右键->检查 我们就可以找到IP对应的节点了。

解决ip封禁! 新手也能搭建简单的代理池

解决ip封禁! 新手也能搭建简单的代理池

(2.)确定PORT节点
方法同上

解决ip封禁! 新手也能搭建简单的代理池

我们分析一下:


  • <tr>看作祖节点

  • <td>父节点

  • <a>子节点
    <tr>节点下有许许多多的子节点<td>,而IP位于第一个<td>节点中的<a>节点中,也就是<tr>节点的孙节点
    其中<a>节点有一个target属性 他的值为 “_blank” 这个可以更方便我们去定位此节点
    PORT是位于第二个<td>节点上 也就是第一个<td>的兄节点


分析完之后我们就开始构建脚本吧

解决ip封禁! 新手也能搭建简单的代理池

我们先来调用要用到的模块:

  1. import requests

  2. fro

这两个库没有安装的小伙伴可以先安装一下,我记得安装起来应该挺简单的


为什么不用selenium库呢?


虽然selenium库极其强大,但是用于创建代理池就有点小题大做了,而且运行起来也没有这两个库运行的快,安装起来也比较麻烦一点


然后我们要发送请求,构造Xpath解析对象


我们将这些操作都放到一个函数中去

  1. def get_url():

  2. url ='https://ip.ihuan.me/address/5Lit5Zu9.html?page=b97827cc'

  3. html = requests.get(url).text

  4. html = etree.HTML(html)

这样就够建好了html为解析对象


再根据我们前面分析的节点,用Xpath规则去筛选我们想要的文本:

  1. result = html.xpath('//td[2]/text()')

  2. 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文本当中):

  1. for a,b in zip(result2,result):

  2. PORT = b

  3. IP = a

  4. DL =(a +':'+b)

  5. with open ('DL.txt','a')as f:

  6. f.write(DL +"n")

DL = “IP”:”PORT” 格式

运行后生成的文本内容为这个样子:

解决ip封禁! 新手也能搭建简单的代理池

但是这样远远不能满足我们的需求,我们不能只爬取这一页的代理,所以我们要改一下函数,我以前三页为例。

  1. lists =['5crfe930','4ce63706','b97827cc']

  2. def get_url(page):

  3. url ='https://ip.ihuan.me/address/5Lit5Zu9.html?page='+ page

  4. html = requests.get(url).text


  5. html = etree.HTML(html)

  6. result = html.xpath('//td[2]/text()')

  7. result2 = html.xpath('//td/a[@target="_blank"]/text()')


  8. for a,b in zip(result2,result):

  9. PORT = b

  10. IP = a

  11. DL =(a +':'+b)

  12. with open ('DL.txt','a')as f:

  13. f.write(DL +"n")

这里引用了lists列表,简单的循环三次请求,分别请求前三页的网址。因为page后的值被加密了 短时间内很难找到规律。


不过当我们调用动态渲染的话(selenium库)就可以完美解决这个问题了,即可实现无视加密 放肆抓取的效果。


这里我就偷个懒了,0基础的萌新也很难看懂selenium库的使用,


所以为了提高效率 我干脆用这种最直白的方法给你们爬一下。

当我们拥有大量IP代理的时候 我们还要确认这里面有哪些IP可以正常为我们所用。

于是我们还要写一个验证函数:(因为穷,所以要写/(ㄒoㄒ)/~~):

  1. def check(DL):

  2. url ='http://%s'% DL.rstrip()

  3. try:

  4. result = requests.get(url,timeout=5)

  5. print(DL +"代理可用")

  6. except:

  7. print('代理不可用')

这样子就很舒服啦,我们设置一个发送一个请求,


如果请求超时5秒,那么直接回显此代理不可用,

如果5秒内请求成功,那么则证明此代理可用,并且将可用代理回显出来。


这里也可以用状态码(status_code)来进行验证 比较好用,

我嫌麻烦懒得那么写了,

因为并不是只有状态码为[200]的代理可用 其实[400]的也可以用。

最后一步就是写个循环 将用到的函数都循环进去,当然你也可以main()函数,将用到的函数包含进去。

  1. for i in lists:

  2. get_url(i)


  3. with open('DL.txt','r')as F:

  4. Str= F.readlines()

  5. for DL inStr:

  6. check(DL)

将lists中的page遍历到url中去,你列表写的越多,爬取的页面也就越多。


然后我们爬取的代理都会存放到与脚本的同目录下,DL.txt


将代理从文本中遍历到check()函数中去

所以最终的代码是这个样子的:

  1. import requests

  2. from lxml import etree


  3. def get_url(page):

  4. url ='https://ip.ihuan.me/address/5Lit5Zu9.html?page='+ page

  5. html = requests.get(url).text


  6. html = etree.HTML(html)

  7. result = html.xpath('//td[2]/text()')

  8. result2 = html.xpath('//td/a[@target="_blank"]/text()')


  9. for a,b in zip(result2,result):

  10. PORT = b

  11. IP = a

  12. DL =(a +':'+b)

  13. with open ('DL.txt','a')as f:

  14. f.write(DL +"n")



  15. def check(DL):

  16. url ='http://%s'% DL.rstrip()

  17. try:

  18. result = requests.get(url,timeout=5)

  19. print(DL +"可用")

  20. except:

  21. print('不可用')



  22. lists =['5crfe930','4ce63706','b97827cc']

  23. for i in lists:

  24. get_url(i)


  25. with open('DL.txt','r')as F:

  26. Str= F.readlines()

  27. for DL inStr:

  28. check(DL)

解决ip封禁! 新手也能搭建简单的代理池

然后我们来执行一下:


只要显示出的IP基本都是可以用的 而且还是很快的那种


可用代理有很多,我就截一张图好啦

解决ip封禁! 新手也能搭建简单的代理池

其实写这个脚本的时候碰到很多的坑 pyquery,bs4,selenium,Xpath这些库我都用过,最后还是筛选出Xpath最适用这个脚本。


而且在遍历的时候也碰到很多的坑,没得老师问 自己尝试 还是挺痛苦的。


幸运的是苦尽甘来,大家在爬取代理的时候可以选择多个代理网站同时爬取,只不过多写两个差不多一样的函数罢了。


以用有时间了 也可以尝试配合代理池写个自动SQL注入给大家呀 ~


这样老师再也不用但心我们找不到漏洞了


PS:写文章好累 分享好快乐

解决ip封禁! 新手也能搭建简单的代理池

源码有需要,后台回复“源码”即可


黑客视频教程录播+进内部群+黑客工具+攻防靶场

扫下方二维码直接领各资料

解决ip封禁! 新手也能搭建简单的代理池

扫码免费领资料

解决ip封禁! 新手也能搭建简单的代理池

(正在为你配置合适的助教)


解决ip封禁! 新手也能搭建简单的代理池

往期内容回顾

解决ip封禁! 新手也能搭建简单的代理池


手把手教你如何远程监听他人手机

八款白嫖的开发安全测试工具

黑信息提取工具!Linux的各类密码提取



解决ip封禁! 新手也能搭建简单的代理池






原文始发于微信公众号(白帽子左一):解决ip封禁! 新手也能搭建简单的代理池

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月16日00:03:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   解决ip封禁! 新手也能搭建简单的代理池https://cn-sec.com/archives/957804.html

发表评论

匿名网友 填写信息