再学python——爬取、构建ip代理池

在进行安全测试时,一些网站会对我们发送的 奇葩请求 / 扫描 / 爆破 时进行拦截,这里可以尝试构建一个ip代理池,无论是网络爬虫还是请求发送,都能很好地解决这些问题

(爬虫时请求包header中的User-Agent可通过抓包复制粘贴)
在这里插入图片描述
代码如下:

# -*- coding:utf-8 -*-
import requests
import re
from bs4 import BeautifulSoup as bs
import telnetlib

	#爬取数据
def proxy_spider():
    #设置请求
    headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'}
    url = 'https://www.xicidaili.com/nn'
    r = requests.get(url=url, headers=headers)
    print (r)

    #解析 通过re.compile('|[^odd]')解析奇数和偶数行
    soup = bs(r.content, 'html.parser')
    datas = soup.find_all(name='tr', attrs={'class': re.compile('|[^odd]')})
    
    for data in datas:
        soup_proxy_content = bs(str(data), 'html.parser')
        soup_proxys = soup_proxy_content.find_all(name='td')
        ip = str(soup_proxys[1].string)
        port = str(soup_proxys[2].string)
        types = str(soup_proxys[5].string)
        #print ip, port, types
        
        #判断IP地址是否存活
        proxy = {}
        proxy[types.lower()] = '%s:%s' % (ip, port)
        
        proxy_telnet(ip, port, types)

#检测IP地址是否存活
def proxy_telnet(ip, port, types):
    proxy = {}
    proxy[types.lower()] = '%s:%s' % (ip, port)
    
    try:
        telnetlib.Telnet(ip, port, timeout=3)
        print ('True:', proxy)
    except:
        print ('False:', proxy)

proxy_spider()

如果想要获取能成功使用的代理ip内容,可添加proxy_check(ip, port, types)调用requests代理访问方法。

 def proxy_check(ip, port, types):
     proxy = {}
     proxy[types.lower()] = '%s:%s' % (ip, port)
     #proxy = {'https':'203.208.41.106:443'}
     try:
         r = requests.get('https://www.xicidaili.com/nn', proxies=proxy, timeout=6)
         #print r.text
         ip_content = re.findall(r"\[(.*?)\]", r.text)[0]
         if ip == ip_content:
             print (proxy)
     except Exception as e:
         print (e)
         pass

大部分获取的IP好像都不可行。
不过代码是没问题的,因为我用该代码配合存活网站的IP来测试是成功的,也许需要爬取另外的代理IP网站
在这里插入图片描述

GOT IT!

 
******************************************************
小实验小结,具体测试利用方式需根据具体实践场景~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值