您当前的位置:首页 > 计算机 > 编程开发 > Python

Python中requests模块对代理IP的有效性验证

时间:12-09来源:作者:点击数:
CDSY,CDSY.XYZ

Python中requests模块对代理IP的有效性验证

#!/usr/bin/env python
# coding=utf-8

# 代理IP验证有效性
# https://www.xicidaili.com/nn/
# https://www.kuaidaili.com/free/inha/1/

import urllib.request
import threading

def isActiveProxy():
    url = "http://quote.stockstar.com/stock"  #打算抓取内容的网页
    proxy_ip=[{'http': 'http://111.177.169.24:9999'},{'http': 'http://111.177.169.24:9999'},{'http':'111.177.169.24:9999'},{}]  #想验证的代理IP,HTTP要和代理IP网站一致大写
    # 这么写也可以
    # proxy_ip=[{'http': '111.177.169.24:9999'},{'http': '111.177.169.24:9999'}]  #想验证的代理IP,HTTP要和代理IP网站一致大写
    length = len(proxy_ip)
    for i in range(length):
        proxy_support = urllib.request.ProxyHandler(proxy_ip[i])
        opener = urllib.request.build_opener(proxy_support)
        # 可忽略
        opener.addheaders=[("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64)")]
        # 如果这么写,就是将opener应用到全局,之后所有的,
        # 不管是opener.open()还是urlopen() 发送请求,都将使用自定义代理。
        urllib.request.install_opener(opener)
        try:
            print("\r验证代理IP数据进度:{:.2f}%".format((i + 1) * 100 / length), end="")
            request = urllib.request.Request(url)
            # response = opener.open(request)
            response = urllib.request.urlopen(request)
            print("\ncode:",response.code)# 返回200代表有效
            # print(response.read())
        except Exception as e:
            print(e)

if __name__ == "__main__":
    #多线程验证
    threads=[]
    thread=threading.Thread(target=isActiveProxy,args=[])
    thread.setDaemon(False)
    thread.start()
    threads.append(thread)
    #阻塞主进程,等待所有子线程结束
    for thread in threads:
        thread.join()

# 另一种简单方法:
import requests

# proxy_ip={'http': 'http://111.177.169.24:9999'}  #想验证的代理IP,HTTP要和代理IP网站一致大写
proxy_ip={'http': '111.177.169.24:9999'}  #想验证的代理IP,HTTP要和代理IP网站一致大写
# 这么写也可以
# proxy_ip={'http': '111.177.169.24:9999'}  #想验证的代理IP,HTTP要和代理IP网站一致大写
try:
  response = requests.get('http://quote.stockstar.com/stock', proxies=proxy_ip,timeout=3)
  print(response.status_code) # 成功返回:200
except Exception as e:
  print('connect failed:',e)
else:
    print('success:',response.status_code)
CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐