第一種方法是使用telnetlib
import telnetlib import requests from lxml import etree #解析此url頁面的IP url = 'http://ip.geiwoxiao.com/' headers = { 'User-Agent':'User-Agent:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;' } #使用requests請求指定頁面,返回html頁面 html = requests.get(url=url,headers=headers).text #使用xpath解析數據,拿到IP及端口 tree = etree.HTML(html) ip_text = tree.xpath('/html/body/div[5]/p[2]/text()')[0] ip_list = ip_text.split('\r\n') #循環ip_list,取出每個IP做檢測是否可用 for i in ip_list: ip,port = i.split(':') print(ip,port) try: telnetlib.Telnet(ip,port,timeout=5) print('可用') except Exception as e: print(e,'不可用')
第二種方法
from lxml import etree import requests #解析此url頁面的IP url = 'http://ip.geiwoxiao.com/' #使用requests請求指定頁面,返回html頁面 html = requests.get(url=url).text headers = { 'User-Agent':'User-Agent:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;' } #使用xpath解析數據,拿到IP及端口 tree = etree.HTML(html) ip_text = tree.xpath('/html/body/div[5]/p[2]/text()')[0] ip_list = ip_text.split('\r\n') use_ip = [] #循環ip_list,取出每個IP做檢測是否可用 for ip in ip_list: try: res = requests.get(url='http://icanhazip.com/',proxies={'http':ip},timeout=5).text print(res.strip()) if res.strip() in ip: print(ip,'可用') #將可用IP添加到列表中 use_ip.append(ip) else: print(ip,'不可用') except Exception as e: print(ip,'超時') #查看可用的use_ip print(use_ip)
第三種是訪問百度
from lxml import etree import requests #解析此url頁面的IP url = 'http://ip.geiwoxiao.com/' #使用requests請求指定頁面,返回html頁面 html = requests.get(url=url).text headers = { 'User-Agent':'User-Agent:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;' } #使用xpath解析數據,拿到IP及端口 tree = etree.HTML(html) ip_text = tree.xpath('/html/body/div[5]/p[2]/text()')[0] ip_list = ip_text.split('\r\n') use_ip = [] #循環ip_list,取出每個IP做檢測是否可用 for ip in ip_list: try: res = requests.get(url='https://www.baidu.com/',headers=headers,proxies={'https':ip},timeout=5).text print(len(res))#判斷URL返回的數據長度是否大於5000 except Exception as e: print(ip,e)