再學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!

 
******************************************************
小實驗小結,具體測試利用方式需根據具體實踐場景~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章