對代理IP進行檢測是否可用


第一種方法是使用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)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM