阿布云

你所需要的,不仅仅是一个好用的代理。

简单的示范如何抓一堆网络代理IP

阿布云 发表于

做安全性测试时,很有必要地就是寻找一个隐身点来模拟进行攻击,模拟攻击的方式有很多,有模拟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')

当然上面只是一种最简单的校验示例,请自行发挥。阿布云代理的干货分享完毕,欢迎支持使用阿布云代理哦!