【Python从入门到进阶】41、有关requests代理的使用

接上篇《40、requests的基本使用》
上一篇我们介绍了requests库的基本使用,本篇我们来学习requests的代理。

一、引言


在网络爬虫和数据抓取的过程中,我们经常需要发送HTTP请求来获取网页内容或与远程服务器进行通信。然而,在某些情况下,直接发送请求可能会受到限制或被阻止,这时就需要借助代理来完成任务。

代理在网络通信中起到中间人的作用,它代表我们与目标服务器建立连接并传递请求和响应。通过使用代理,我们可以隐藏真实的IP地址、绕过访问限制,并增加请求的匿名性。Python中的requests库提供了便捷且强大的功能来处理HTTP请求,并且支持代理的配置。

本篇博客将重点介绍如何在Python中使用requests库来利用代理进行网络请求。

二、代理配置方法

在使用Python中的requests库发送HTTP请求时,我们可以通过以下几种方法来配置代理。这些方法允许我们灵活地选择适合你需求的代理设置。

1、使用proxies参数设置全局代理

requests库提供了一个名为proxies的参数,通过它可以设置全局代理。我们可以将代理配置作为一个字典传递给该参数,字典的键是代理类型(如'http'、'https'等),值是代理的地址和端口号。
proxies参数语法格式:

proxies={"协议":"协议://IP:端口号"}

以下是一个示例:

import requests
proxies = {'http': 'http://proxy.example.com:8080','https': 'https://proxy.example.com:8080'
}response = requests.get(url, proxies=proxies)

通过这种方式配置的代理将应用于所有的请求,适用于简单的代理需求。

2、使用session对象设置会话级别的代理

若你需要在多个请求之间保持相同的代理设置,可以使用requests库中的Session对象。Session对象允许你在会话级别上保持一些参数,包括代理设置。以下是一个示例:

import requestssession = requests.Session()
session.proxies = {'http': 'http://proxy.example.com:8080','https': 'https://proxy.example.com:8080'
}response = session.get(url)

在这种情况下,创建的Session对象将会持续保持代理设置,直到我们显式地修改或重置它。这对于需要在多个请求中使用相同代理的情况非常有用,例如爬取网站的多个页面时。

请注意,无论是使用全局代理还是会话级别的代理,都要确保代理地址和端口号的正确性,并根据实际情况选择http或https类型的代理。此外,如果代理需要验证身份,你还需要提供相应的用户名和密码。

三、代理示例测试

我们编写一个python代码,使用免费代理IP访问测试网站(http://httpbin.org/get)获取当前访问环境的ip地址:

# _*_ coding : utf-8 _*_
# @Time : 2023-11-05 13:55
# @Author : 光仔December
# @File : requests代理
# @Project : Python_Projects
import json
import requestsurl = 'http://httpbin.org/get'headers = {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9","User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36"
}response = requests.get(url=url, headers=headers)# 检查请求是否成功
if response.status_code == 200:# 处理响应内容response.encoding = 'utf-8'  # 设置响应内容的编码格式为utf-8# 解析JSON结果data = response.text  # 获取响应信息print(data)
else:print("请求失败:", response.status_code)

运行效果:

下面我们就通过代理访问,看看目标网站会不会识别为代理地址。
首先我们找到一个免费代理网站(https://www.kuaidaili.com/free/),获取一个免费代理IP:

注:如果免费的不行,可以注册后买一个6小时的临时代理用于测试。
然后在代码中使用proxies参数设置代理(一个或多个):

# 设置代理地址(重庆市 电信的http代理)
proxies = {'http': 'http://183.64.239.19:8060'
}response = requests.get(url=url, headers=headers, proxies=proxies)

效果:

可以看到代理生效了,目标网站将我们的访问IP解析为了代理IP。

至此requests的代理使用就讲解完毕。下一篇我们继续学习使用requests的Cookie登录古诗文网站。

参考:尚硅谷Python爬虫教程小白零基础速通
转载请注明出处:https://guangzai.blog.csdn.net/article/details/134230732

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/131284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过在Z平面放置零极点的来设计数字滤波器

文章来源地址:https://www.yii666.com/blog/393376.html 通过在Z平面放置零极点的来设计数字滤波器 要求:设计一款高通滤波器,用在音频信号处理过程中,滤掉100Hz以下的信号。 实现方法:通过在Z平面放置零极点的来设…

数据结构与算法【02】—线性表

CSDN系列专栏:数据结构与算法专栏 针对以前写的数据结构与算法系列重写(针对文字描述、图片、错误修复),改动会比较大,一直到更新完为止 前言 通过前面数据结构与算法基础知识我们知道了数据结构的一些概念和重要性,那么本章总结…

【UE 材质】简单的闪闪发光材质

效果 节点 参考视频: https://www.bilibili.com/video/BV1uK411y737/?vd_source36a3e35639c44bb339f59760641390a8

MySQL(8):聚合函数

聚合函数介绍 聚合函数: 对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。 聚合函数类型:AVG(),SUM(),MAX(),MIN(),COUNT() AVG / SUM 只适用于数值类型的字段(或变量) SELECT AVG(…

【LeetCode】每日一题 2023_11_4 数组中两个数的最大异或值

文章目录 刷题前唠嗑题目:数组中两个数的最大异或值题目描述代码与解题思路 结语 刷题前唠嗑 LeetCode? 启动!!! 题目:数组中两个数的最大异或值 题目链接:421. 数组中两个数的最大异或值 题目描述 代…

前端埋点方式

前言: 想要了解用户在系统中所做的操作,从而得出用户在本系统中最常用的模块、在系统中停留的时间。对于了解用户的行为、分析用户的需求有很大的帮助,想实现这种需求可以通过前端埋点的方式。 埋点方式: 1.什么是埋点&#xff1f…

基于Jenkins实现接口自动化持续集成,学完涨薪5k

一、JOB项目配置 1、添加描述 可选选项可填可不填 2、限制项目的运行节点 节点中要有运行环境所需的配置 节点配置教程:https://blog.csdn.net/YZL40514131/article/details/131504280 3、源码管理 需要将脚本推送到远程仓库中 4、构建触发器 可以选择定时构建…

【python】路径管理+路径拼接问题

路径管理 问题相对路径问题绝对路径问题 解决os库pathlib库最终解决 问题 环境:python3.7.16 win10 相对路径问题 因为python的执行特殊性,使用相对路径时,在不同路径下用python指令会有不同的索引效果(python的项目根目录根据执…

Temp directory ‘C:\WINDOWS\TEMP‘ does not exist

问题描述 解决方法 管理员权限问题,进入temp文件夹更改访问权限即可。 点击 temp文件夹 属性 -> 安全 -> 高级 -> 更改主体Users权限 给读取和写入权限 参考博客 开发springboot项目时无法启动Temp directory ‘C: \WINDOWS\TEMP‘ does not exist

Python库学习(十二):数据分析Pandas[下篇]

接着上篇《Python库学习(十一):数据分析Pandas[上篇]》,继续学习Pandas 1.数据过滤 在数据处理中,我们经常会对数据进行过滤,为此Pandas中提供mask()和where()两个函数; mask(): 在 满足条件的情况下替换数据,而不满足条件的部分…

leetcode-经典面/笔试题目

1.消失的数字 面试题 17.04. 消失的数字 - 力扣(LeetCode)https://leetcode.cn/problems/missing-number-lcci/ 这个题目当然有好几种解法,这里我推荐一种比较优秀的思路,也就是单身狗思路:异或。 异或的特点是相异…

账户权限控制

1.首先配置一个单群组4节点的链 1.1创建操作目录 cd ~ && mkdir -p fisco && cd fisco 1.2下载国内脚本 curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v2.9.1/build_chain.sh && chmod ux bu…

【KVM】软件虚拟化和硬件虚拟化类型

前言 大家好,我是秋意零。 今天介绍的内容是虚拟化技术以及软件虚拟化和硬件虚拟化。 👿 简介 🏠 个人主页: 秋意零🔥 账号:全平台同名, 秋意零 账号创作者、 云社区 创建者🧑 个…

系统提示缺少或找不到d3dcompiler_43.dll文件的详细修复教程

今天我来给大家分享一下关于d3dcompiler_43.dll缺失的4个修复方法。 首先,我们来了解一下d3dcompiler_43.dll的作用。它是DirectX中的一个组件,用于编译Shader和Pixel着色器代码。如果缺少了这个文件,就会导致游戏或应用程序无法正常运行。 …

全能数据分析软件 Tableau Desktop 2019 mac中文版功能亮点

Tableau Desktop 2019 mac是一款专业的全能数据分析工具,可以让用户将海量数据导入并记性汇总,并且支持多种数据类型,比如像是编程常用的键值对、哈希MAP、JSON类型数据等,因此用户可以将很多常用数据库文件直接导入Tableau Deskt…

适合新手自学的网络安全基础技能“蓝宝书”:《CTF那些事儿》

文章目录 内容简介读者对象专家推荐目录赠书活动 CTF比赛是快速提升网络安全实战技能的重要途径,已成为各个行业选拔网络安全人才的通用方法。但是,本书作者在从事CTF培训的过程中,发现存在几个突出的问题: 线下CTF比赛培训中存在…

力扣:149. 直线上最多的点数(Python3)

题目: 给你一个数组 points ,其中 points[i] [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。 来源:力扣(LeetCode) 链接:力扣(LeetCode)官网 - 全球极客挚爱…

stm32整理(三)ADC

1 ADC简介 1.1 ADC 简介 12 位 ADC 是逐次趋近型模数转换器。它具有多达 19 个复用通道,可测量来自 16 个外部 源、两个内部源和 VBAT 通道的信号。这些通道的 A/D 转换可在单次、连续、扫描或不连续 采样模式下进行。ADC 的结果存储在一个左对齐或右对齐的 16 位…

农业中的机器学习

机器学习训练模型推荐: UnrealSynth虚幻合成数据生成器 - NSDT 机器学习是一个不断发展的领域,在农业中有许多潜在的应用。农民和农业科学家正在探索如何转向机器学习开发来提高作物产量、减少用水量和预测病虫害。未来,机器学习可以帮助农民…

Proteus仿真--12864LCD显示计算器键盘按键实验(仿真文件+程序)

本文主要介绍基于51单片机的12864LCD液晶显示电话拨号键盘按键实验(完整仿真源文件及代码见文末链接) 仿真图如下 本设计主要介绍计算器键盘仿真,按键按下后在12864液晶上显示对应按键键值 仿真运行视频 Proteus仿真--12864LCD显示计算器…