python脚本笔记:随机代理的目录爆破工具

  • python脚本笔记:随机代理的目录爆破工具已关闭评论
  • 35 views
  • A+

前言:

最近一直在hw值守,看着红队大佬们封不净的ip,开始好奇使用的什么方法。

于是827的日子就开始了(因为本人比较菜,只能多花时间学习)

目前常用的代理ip自动替换的方法有三种

1.利用秒播ip配合ip魔盒使用

2.流量走tor代理

3.定制代码进行ip替换

本文主要讲的是第三种方式(因为最简单也最便宜)

文中使用演示的url为本人域名,所以就没有脱敏

环境

python3

python3库

queue

sys

requset

threading

多个可用的代理ip

proxy_tools(可选是否搭建)


看个人需求,如果你没有稳定的代理ip的话 建议搭建好一个proxy_tools。

文章主要是使用proxy_tools的代码,使用自己的代理ip的话,改一下代码就可以

proxy_tools github上大佬开源的

地址:https://github.com/jhao104/proxy_pool/

脚本编写

大体思路

1.读取字典文件

2.验证读取的代理ip是否可以使用

3.使用代理进行发包

脚本分块

1.对读取字典文件,这个其实没哈好说的

```
f = open('dir.txt', 'r')#dir为你的字典文件
for i in f:
print(i)
````

wKg0C2CozEOADu8hAAAgNJAN0y8743.png

2.验证代理是否可用

`

```
def get_proxy():#通过api获取数据的
while True:
proxy = requests.get("http://ip:5010/get/").json().get("proxy")#通过proxy_tools api进行获取数据
try:#如果报错就代表没有代理ip 出现了问题
proxys = {
'http': 'http://' + proxy,
'https': 'https://' + proxy
}
a = requests.get("http://www.xxxx.cn/", proxies=proxys, timeout=1, verify=False).status_code#此处主要是验证,所以给一个可以访问的网站就行
if a == 200:return proxys#如果访问正常就代表代理可用返回代理ip
except :#调用delete_proxy删除代理ip
delete_proxy(proxy)
def delete_proxy(proxy):#删除代理ip
requests.get("http://p:5010/delete/?proxy={}".format(proxy))

````

通过get调用api来获取代理ip

因为代理不能用是会报错的

wKg0C2Co0Q2ABW3dAACo379AODw479.png

所以在外层加了一个死循环,当代理不能用的时候,再重新获取 直到获取到一个可以用的代理。

3.使用代理进行发包

```
def req_proxy(url):
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'}

    proxy=get_proxy()
    try:#超时就跳出,重新获取代理ip
        tar = requests.get(url, headers=headers, proxies=proxy, timeout=10, verify=False)
        if tar.status_code != 404:  # 筛选状态码
            urls = {url+"    Is status:"+str(tar.status_code)}
            print(list(urls))
    except :
        pass

```

因为菜,用的最简单的状态码来判定


完整代码

以上就实现了想要的东西,现在就可以把这些东西组装起来

`

```
import requests
def get_proxy():
while True:
proxy = requests.get("http://xxx:5010/get/").json().get("proxy")
try:
proxys = {
'http': 'http://' + proxy,
'https': 'https://' + proxy
}
a = requests.get("http://xxx.org/get", proxies=proxys, timeout=1, verify=False).status_code
if a == 200:return proxys
except :
delete_proxy(proxy)
def delete_proxy(proxy):
requests.get("http://xxx:5010/delete/?proxy={}".format(proxy))
def req_proxy(url):
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'}

    proxy=get_proxy()
    try:#超时就跳出,重新获取代理ip
        tar = requests.get(url, headers=headers, proxies=proxy, timeout=10, verify=False)
        if tar.status_code != 404:  # 筛选状态码
            urls = {url+"    Is status:"+str(tar.status_code)}
            print(list(urls))
    except :
        pass

url="http://www.allbeard.cn/"
f = open('dir.txt', 'r')#dir为你的字典文件
for i in f:
req_proxy(url+i)
````

有两次的筛选,这速度跑完一个脚本就到新的一年了吧(太慢了)。


多线程的完整版

```
import requests, sys, threading
from queue import Queue
def get_proxy():
while True:
proxy = requests.get("http://xxx:5010/get/").json().get("proxy")
try:
proxys = {
'http': 'http://' + proxy,
'https': 'https://' + proxy
}
a = requests.get("http://xxxx.org/", proxies=proxys, timeout=1, verify=False).status_code
if a == 200:return proxys
except :
delete_proxy(proxy)
def delete_proxy(proxy):
requests.get("http://xxx:5010/delete/?proxy={}".format(proxy))

多线程实现扫描目录

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()
        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'}

        proxy=get_proxy()
        try:#超时就跳出,重新获取代理ip
            tar = requests.get(url, headers=headers, proxies=proxy, timeout=10, verify=False)
            if tar.status_code != 404:  # 筛选状态码
                urls = {url+"    Is status:"+str(tar.status_code)}
                print(list(urls))
        except :
            pass

def start(url, su):
queue = Queue()
f = open('dir.txt', 'r')
for i in f:
queue.put(url + i.rstrip('\n'))
# 多线程
threads = []
thread_count = int(su)
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":#入口
print('+------------------------------------------')
print('+ \033[34m不会联盟 by beard \033[0m')
print('+ \033[34m工具名:随机代理的目录扫描工具 \033[0m')
print('+ \033[36m使用格式: python3 proxypath.py http://xxxx/ \033[0m')
print('+------------------------------------------')
try:
url = sys.argv[1]
except:
print("按照格式输入 python3 proxypath.py http://xxxx/ ")
sys.exit()
count = 10
start(url, count)
```

代码简单 大佬们请轻喷