你所需要的,不仅仅是一个好用的代理。
做安全性测试时,很有必要地就是寻找一个隐身点来模拟进行攻击,模拟攻击的方式有很多,有模拟DDOS、逻辑绕过等。而面对这些攻击的最大的利害点就是IP的来源多、可控度弱、误杀率高,所以不得不感叹防护设备自我学习技术是未来的趋势,而对于模拟此类攻击而言,如何快速地、有效地拿到一大批代理IP资源是我们主要考虑的。
以下就是拿某个网站做的实验,而实验使用的技术就是PYTHON了。
在WINDOWS下编写:
#!python.exe
#coding:utf-8
import urllib.request
import re
import _thread
import time
import socket
import sys
#从阿布云代理网站上抓取10页免费代理
print('正在抓取,速度可能较慢,请等待...\n')
pagenum = 0
result = []
fail_times = 0
while fail_times <= 3 and pagenum < 10:
pagenum = pagenum + 1
url = 'https://www.abuyun.com/proxylist/' + str(pagenum) + '/'
try:
response = urllib.request.urlopen(url, timeout=10)
ip=''
for line in response:
line = line.decode().strip()
if line.startswith('<td>'):
proxy = line[line.find('<td>') + 4 : line.find('</td>')]
result.append(proxy)
except:
fail_times = fail_times + 1
pagenum = pagenum - 1
print('抓取完毕,等待生成列表...\n')
#生成代理列表等待测试有效性
ms = [result[n:n+8] for n in range(8, len(result), 8)]
print('生成列表完毕,列表如下...\n')
print(ms)
简单地解释下,从某代理上抓下10页的代理IP,然后对结果进行定向的分析与合成。效果如下:
[['115.218.221.128', '9000', '高匿名', 'HTTP', 'GET, POST', '浙江省温州市 电信', '1秒', '2分钟前']等
接下来就是分析这些IP在此时可还有效,这块不具体普及了,防止结果被用作恶意的用途。
print('等待测试有效性...\n========================\n')
#测试代理的有效性
for px in ms:
proxy_url = px[0] + ':' + px[1]
print('正在测试:' + proxy_url + '\n')
proxy_handler = urllib.request.ProxyHandler({'http': proxy_url})
#proxy_auth_handler = urllib.request.ProxyBasicAuthHandler()
#proxy_auth_handler.add_password('', '', 'user', 'password')
opener = urllib.request.build_opener(proxy_handler, urllib.request.HTTPHandler)
r=urllib.request.Request('https://www.google.com/')
r.add_header('Accept-Language', 'utf-8')
r.add_header('Content-Type', 'text/html; charset=utf-8')
r.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)')
try_count = 1
while try_count <= 2:
try:
t0 = time.time()
f = opener.open(r)
data = f.read().decode('utf-8')
print(data)
if 'google' in data:
t1 = time.time() - t0
print('有效代理:' + str(t1) + '\n')
else:
print('无效代理\n')
break
except:
time.sleep(1)
try_count = try_count + 1
print('===================\n')
当然上面只是一种最简单的校验示例,请自行发挥。阿布云代理的干货分享完毕,欢迎支持使用阿布云代理哦!