前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >扫目录+N多代理IP绕过拦截

扫目录+N多代理IP绕过拦截

作者头像
洛米唯熊
发布2020-04-08 14:49:41
1.7K0
发布2020-04-08 14:49:41
举报
文章被收录于专栏:洛米唯熊洛米唯熊

0x00:简介

在渗透测试的时候,很担心平时在扫WEB目录的时候,频繁的请求会容易被封IP.被封IP以后.要么等上一段时间,要么更换自己的IP.重新启动扫描器.这样的效率很低下,也很浪费自己的工作时间.

此时,代理IP池进入了我的考虑范围.让代理+扫目录的脚本.自动化的去更新IP.不用再去担心IP是否被封.

但是网上流传了N多的WEB目录扫描器.用别人的东西,心里都有那么点不自然,一个是担心有后门,一种是自己也想向大佬们学习.拥有自己的目录扫描器.

本文的python脚本为纯自学后编写,如有不规范请大佬指点(望轻喷,感谢 !!!)

0x01:编写

1、代理IP采集地址

代码语言:javascript
复制
http://www.66ip.cn/

主要是免费,但是N多已经不能连接了

得自己去做验证,害!!

2、IP验证地址

代码语言:javascript
复制
https://ifconfig.me

它会显示你当前的所在IP

3、思路

首先爬取代理IP,并用正则规则给匹配出来所有IP

代码语言:javascript
复制
url="http://www.66ip.cn/nmtq.php?getnum=100"#爬取100个做例子
headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 12_10) AppleWebKit/600.1.25 (KHTML, like Gecko) Version/12.0 Safari/1200.1.25'}
r=requests.get(url,headers=headers).text
ip_proxy=re.findall("((?:[0-9]{1,3}\.){3}[0-9]{1,3}:*[0-9]*)", r)#正则匹配IP
for i in ip_proxy:#用for循环取出IP并赋予i
  print (i)

我们来继续看Python中proxies的编写规则

代码语言:javascript
复制
proxy={'协议':'ip:端口'}

继续

代码语言:javascript
复制
types=”https“
proxys={}
proxys[types.lower()]='%s'%i #把上面的i值拼接进去
print (proxys)#输出例子:{'https': '1.2.3.4:3308'}

继续来看扫描WEB的部分

代码语言:javascript
复制
r= requests.get (url,headers=headers,proxies=proxys,timeout=8).status_code #发送请求并确定状态码=200
if r==200:
  sys.stdout.write('[200] %s\n' %url)
elif r==301:
  sys.stdout.write('[--301--] %s\n' %url)
  #这里只是判断200的状态码跟301的状态码,后续可加!

思路差不多讲到这

来看成品

代码语言:javascript
复制
#/usr/bin/python3
#author:Jaky

import requests,sys,threading
from queue import Queue

#多线程实现扫描目录
class DirScan(threading.Thread):

  def __init__(self,queue):
    threading.Thread.__init__(self)
    self.queue=queue
    
  def run(self):
    #获取队列中的URL
    while not self.queue.empty():
      url=self.queue.get()

      with open('ok.txt','r') as file: list = [www.strip() for www in file.readlines()]
      headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 12_10) AppleWebKit/600.1.25 (KHTML, like Gecko) Version/12.0 Safari/1200.1.25'}
      try:
        for www in list:
          tar=requests.get(url,headers=headers,proxies=eval(www),timeout=10,verify=False)
          if tar.status_code==200:#这里只显示200的状态码,需要可加其他状态码做筛选
            urls={url}
            print (list(urls))
      except Exception as e:
        pass
def start(url,count):
  queue=Queue()
  
  f=open ('dir.txt','r')
  for i in f:
    queue.put(url+i.rstrip('\n'))
#多线程  
  threads=[]
  thread_count=int(count)
  
  for i in range(thread_count):
    threads.append(DirScan(queue))
    
  for t in threads:
    t.start()
  for t in threads:
    t.join()
    
if __name__=="__main__":
  url=sys.argv[1]
  count=10
  start(url,count)

采用多线程去运行

不然单线程会很慢

注释:

需要在脚本的目录下存放WEB目录的文件,注意一点的是,路径不能有中文。

"dir.txt" 存放路径文件,例子如下

"ok.txt" 存放能用的代理IP,例子如下

运行例子

这里有个小弊端

就是用多少代理,就会出现匹配多少结果

如果你觉得不好看

可以自己加一个去重的参数

0x02:后话

一、声明:请勿做非法攻击任何网站的行为与任何未授权的行为.

后果请自行承担责任!!!

二、代码与思路有很多不足之处,请各位大佬不吝赐教,还请您优化优化.

鄙人将不断的改进,不断的的优化

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 洛米唯熊 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
网站渗透测试
网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档