requests设置代理ip------验证代理ip是否可用

2023-11-12

1. 代理ip设置

1.0 透明、普匿、高匿ip区别

(1) 透明代理
代理服务器将客户端的信息转发至目标访问对象,并没有完全隐藏客户端真实的身份。即服务器知道客户端使用了代理IP,并且知道客户端的真实IP地址。
(2) 普通匿名代理
代理服务器用自己的IP代替了客户端的真实IP,但是告诉了目标访问对象这是代理访问。
(3) 高匿代理
代理服务器良好地伪装了客户端,不但用一个随机的IP代替了客户端的IP,也隐藏了代理信息,服务器不会察觉到客户端是通过代理实现访问的,即用户仿佛就是直接使用代理服务器作为自己的客户端,618国内IP代理就是高匿名的服务器。
所以使用高匿代理就可以隐藏自己的真实IP了

1.1 代理设置格式

1.proxies在你访问http时用http的设置,访问https时用https的设置,所以你的proxy需要同时包含http及https的配置,这样才能生效。
2.如果访问http网站时,可你的proxies={“https”:"*****"}是这样,即只写了https的,那么请求时候会自动使用本机ip。
3.同一个ip(不论它是http、还是https)在proxies里,即可用于访问http,也可访问https的,只需要按下方代码设置即可。
因此格式如下:

import requests
proxies = {
    'http': 'http://222.89.32.159:21079',
    'https': 'http://222.89.32.159:21079'
}
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
}
res = requests.get(url=urls,headers=headers,proxies=proxies)

1.2 详细测试

若要了解详情,这里有人进行过详细测试:
详细测试

1.3 报错407

提示
在这里插入图片描述
找了很久,说是要代理身份 验证,这个问题搞得我很晕!
后来才想起来,我用的是网上购买的代理ip。想要使用购买的代理ip要不就是把本地ip添加到白名单,要不就是使用用户名+密码进行验证。后来发现本地ip又更新了,不在白名单里,因此再次把本地ip添加到白名单后,上述代码就没问题了!!!

2. 验证ip是否可用demo(遇到不可用ip程序会停止)

这一步主要是创建自己的代理ip池:爬取网上免费ip,然后验证是否可用,可用自己保存起来。

2.1 验证网站

这里介绍两个验证网站:
1.验证以http开头ip的:http://httpbin.org
httpbin.org 这个网站能测试 HTTP 请求和响应的各种信息,比如 cookie、ip、headers 和登录验证等,且支持 GET、POST 等多种方法,对 web 开发和测试很有帮助。
它用 Python + Flask 编写,是一个开源项目。
网站
git
使用方法
在这里插入图片描述
2. 验证以https开头的ip:https://www.ip.cn/
也会返回代理ip地址

2.2 代码及结果

2.2.1 http://httpbin.org/get

import requests

urls="https://www.ip.cn/"
url = "http://httpbin.org/get"
proxies = {
    'http': 'http://113.123.45.140:18928',
    'https': 'http://125.87.99.138:15759'
}
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"}
res = requests.get(url=url,headers=headers,proxies=proxies)
#发起请求
if res.status_code == 200:
    print(res.status_code) 
    print(res.text)
else:
    print(res.status_code)
    #print(res.text)

结果:
在这里插入图片描述

2.2.2 https://www.ip.cn/

代码:

import requests

urls="https://www.ip.cn/"
url = "http://httpbin.org/get"
proxies = {
    'http': 'http://113.123.45.140:18928',
    'https': 'http://125.87.99.138:15759'
}
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"}
res = requests.get(url=urls,headers=headers,proxies=proxies)
#发起请求
if res.status_code == 200:
    print(res.status_code) 
    print(res.text)
else:
    print(res.status_code)
    #print(res.text)

结果:
在这里插入图片描述

3. 验证ip是否可用完整代码(使用try-except)

3.1 代码

import requests

urls="https://www.ip.cn/"
url = "http://httpbin.org/get"
proxies0 = {
    'http': 'http://123.171.1.127:20239',
    'https': 'http://123.171.1.127:20239'
}
proxies1 = {
    'http': 'http://180.121.130.41:22485',
    'https': 'http://180.121.130.41:22485'
}
proxies2 = {
    'http': 'http://163.204.241.181:9999',
    'https': 'http://163.204.241.181:9999'
}
proxies3 = {
    'http': 'http://180.105.100.117:23075',
    'https': 'http://180.105.100.117:23075'
}
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"}
proxies=[proxies0,proxies1,proxies2,proxies3]
for pro in proxies:
    try:
    	# timeout=5 是相应超过5s就放弃本次请求执行下一次
        res = requests.get(url=urls, headers=headers, proxies=pro,timeout=5)
        print(pro["https"],"可用,",res.status_code)
    except:
        print(pro["https"],"不可用,")

结果:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

requests设置代理ip------验证代理ip是否可用 的相关文章

随机推荐

  • qt---plt格式处理

    qDebug lt lt do perim lt lt runPerimeterFlag if runPerimeterFlag QPointF point 映射坐标点 添加标志位 QString retval IN SP1 PU 起始坐标
  • 解决MyBatis-Plus分页查询

    在使用Spring Boot或者Spring Cloud开发业务时 经常会需要查数据库 本文以MySQL数据库为例 这时候通常会用到MyBatis 数据量比较多页面展示就会要求分页 接下来正式开始 1 Spring工程创建和添加Maven依
  • HDU - 1272 小希的迷宫之独木桥(并查集的简单应用)

    小希的迷宫 Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total Submission s 51951 Accepted Submi
  • 作为一个面试官,我是怎么来面试测试人员的?

    其实之前关于面试也说了好多 知乎上我也开过一个面试的Live 也有幸被选进了知乎2016精选 不过今天我想说的是在实际过程中如果我去面试了 我会怎么进行面试 会问什么问题 会遵照哪些原则 我本身的行事风格就是比较特殊的 希望对广大应聘者和面
  • pragma once

    在C C 中 pragma once是一个非标准但是被广泛支持的方式 pragma once方式产生于 ifndef之后 ifndef方式受C C 语言标准的支持 不受编译器的任何限制 而 pragma once方式有些编译器不支持 较老编
  • 计算机显卡和cpu的关系,cpu和显卡的关系

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 cpu和显卡的关系是都是计算机重要的硬件 CPU就是中央处理器 电脑中的所有命令几乎都要通过处理器来处理 可以将他简单理解为对数据初加工 而显卡主要是对图形进行处理 它能根
  • 机器学习---算法基础(八)SVM

    参考文献 机器学习数学 拉格朗日对偶问题 拉格朗日对偶问题 为什么支持向量机要用拉格朗日对偶算法来解最大化间隔问题 零基础学SVM Support Vector Machine 一 1 SVM概念 支持向量机 英语 support vect
  • SpringBoot实验合集(持续更新中...)

    实验一 使用Spring Boot构建应用程序 一 实验目的 1 掌握使用IntelliJ IDEA创建Spring Boot应用程序的方法 2 了解spring boot starter parent的配置内容 3 掌握如何利用Start
  • 如何用递归解决逆波兰表达式问题?

    描述 逆波兰表达式是一种把运算符前置的算术表达式 例如普通的表达式2 3的逆波兰表示法为 2 3 逆波兰表达式的优点是运算符之间不必有优先级关系 也不必用括号改变运算次序 例如 2 3 4的逆波兰表示法为 2 3 4 本题求解逆波兰表达式的
  • 蓝桥杯2023年真题 python B组

    第十四届蓝桥杯大赛软件赛省赛 Python 大学 B 组 Python 大学 B 组 试题 A 2023 本题总分 5 分 问题描述 请求出在 12345678 至 98765432 中 有多少个数中完全不包含 2023 完全不包含 202
  • 微服务搭建后端项目

    1 搭建分析 2 开始搭建父项目 父项目选SpringBoot项目 如果使用的idea社区版的话 那就创建maven项目导入如下依赖
  • 索引,元素下标,Java ListIterator 中的 nextIndex() 和 next();

    索引 元素下标 Java ListIterator 中的 nextIndex 和 next 问题 previousIndex 输出前一个元素的下标 索引 nextIndex 输出下一个元素的下标 索引 public static void
  • 使用css动画实现网易云音乐播放界面波浪动画效果

    通过实现CSS实现仿网易云音乐播放界面动画效果 最终的效果如下 界面布局 图片也是实现滚动效果的 使用四个div 来标识每一帧波动的效果 div class container wrap div class container div cl
  • 基于开路电压测量(OCV)的电量计获取锂离子(Li+)电池参数

    获取li 电池参数的步骤 确定满电量和空电量点 提取Li 电池参数的最佳方法是创建一个尽可能与实际应用接近的环境 其中包括保护电路 放电曲线 包括实际应用中有效电流和待机电流的典型值 以及充电曲线 因此需要模拟电池充电和放电过程 并监控和记
  • 地图切片的概念与原理

    为什么80 的码农都做不了架构师 gt gt gt 定义 地图切片 采用预生成的方法存放在服务器端 然后根据用户提交的不同请求 把相应的地图瓦片发送给客户端的过程 它是一种多分辨率层次模型 从瓦片金字塔底层到顶层 分辨率越来越低 但表示的地
  • Redis实现限流的三种方式

    一 固定窗口 所谓固定窗口限流即时间窗口的起始和结束时间是固定的 在固定时间段内允许要求的请求数量访问 超过则拒绝 当固定时间段结束后 再重新开始下一个时间段进行计数 我们可以根据当前的时间 以分钟为时间段 每分钟都生成一个key 用来in
  • Elasticlunr.js 支持其他语言 V0.9.5

    之前一直没有处理其他的语言的需求 所以没有测试elasticlunr js对于其他的语言的支持 多亏了Github的网友 帮忙发现了elasticlunr js对于其他语言支持的问题 昨天 elasticlunr js发布了V0 9 5版本
  • 苹果手机各种尺寸详细表以及iPhoneX、iPhoneXS、iPhoneXR、iPhoneXSMax、iPhone 11、iPhone 12、屏幕适配

    iPhone设备 物理分辨率是硬件所支持的 逻辑分辨率是软件可以达到的 代数 设备 操作系统 逻辑分辨率 point 物理分辨率 pixel 屏幕尺寸 对角线长度 缩放因子 iPhone 第一代 iPhone 2G iOS 1 320 x
  • Centos7 安装Hadoop3 单机版本(伪分布式版本)

    环境版本 CentOS 7 JDK 8 Hadoop 3 CentOS 7 服务器设置 设置静态IP 查看IP配置在 etc sysconfig network scripts 目录下的ifcfg ens33文件中 root Hadoop3
  • requests设置代理ip------验证代理ip是否可用

    文章目录 1 代理ip设置 1 0 透明 普匿 高匿ip区别 1 1 代理设置格式 1 2 详细测试 1 3 报错407 2 验证ip是否可用demo 遇到不可用ip程序会停止 2 1 验证网站 2 2 代码及结果 2 2 1 http h