【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.rhkb.cn/news/181183.html

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

相关文章

Excel自学三部曲_Part3:Excel工作场景实战(四)

文章目录 四、高级函数与数据连接1. 多窗口操作2. VLOOKUP函数3. XLOOKUP函数4. CSV数据格式 四、高级函数与数据连接 1. 多窗口操作 如何将两张子表数据(战区信息、城市信息)连接到主表数据(成交数据),增加主要数据的…

input 调起键盘 ,键盘距离输入框底部太近

input 调起键盘 &#xff0c;键盘距离输入框底部太近 解决方法 cursorSpacing‘20’ 单位是 ‘px’ <input cursorSpacing20 type"text" v-model"replyMain" />距离底部距离 20px &#xff0c;输入框距离键盘距离是20px

黑猫带你学NandFlash第3篇:NAND寻址(行列地址和block/page/LUN之间的关系)

本文依据不同型号NandFlash spec及个人工作经验整理而成,如有错误请留言。 文章为付费内容,已加入原创侵权保护,禁止私自转载及抄袭。 文章所在专栏:《黑猫带你学:NandFlash详解》 本文大约2000字,主要讲解:nand flash如何物理寻址、多plane又是如何寻址、相关计算公式等…

【免费生产力工具】CodeGeeX: AI代码自动补齐、对话、自动注释

CodeGeeX - A Multilingual Code Generation Tool - CodeGeeX 这个是官网&#xff0c;工程好像是开源的&#xff0c;生态不错。清华校友确实强&#xff0c;我是菜菜。 我是在vscode里面装的插件&#xff0c;直接搜索就行。 多的就不bb了&#xff0c;大家试试吧&#xff0c;确…

Windows ObjectType Hook 之 ParseProcedure

1、背景 Object Type Hook 是基于 Object Type的一种深入的 Hook&#xff0c;比起常用的 SSDT Hook 更为深入。 有关 Object Type 的分析见文章 《Windows驱动开发学习记录-ObjectType Hook之ObjectType结构相关分析》。 这里进行的 Hook 为 其中之一的 ParseProcedure。文章实…

uniapp 离线打包 google 登录

官方文档&#xff1a; Oauth 模块 | uni小程序SDK 其中有 clientid 和反向url clientid 是 xxxx.apps.googleusercontent.com 反向url 是 com.googleusercontent.apps.xxx

账户权限控制

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…

【算法】新年好(堆优化dijkstra)

题目 重庆城里有 n 个车站&#xff0c;m 条 双向 公路连接其中的某些车站。 每两个车站最多用一条公路连接&#xff0c;从任何一个车站出发都可以经过一条或者多条公路到达其他车站&#xff0c;但不同的路径需要花费的时间可能不同。 在一条路径上花费的时间等于路径上所有公路…

周记录总结2

1.feign注解中没有URL/服务名是错误的 导致报错&#xff1a;找不到服务 2.测试环境测试时&#xff0c;接口看不到日志&#xff0c;但是页面可以看到接口的返回值 说明有其他机器注册到eureka中 配置文件register 调整为false 3.there is not getter for xxxx 重新编译打个包 …

mac装不了python3.7.6

今天发现一个很奇怪的问题 但是我一换成 conda create -n DCA python3.8.12就是成功的 这个就很奇怪

音乐推荐与管理系统Python+Django网页界面+协同过滤推荐算法

一、介绍 音乐推荐与管理系统。本系统采用Python作为主要开发语言&#xff0c;前端使用HTML、CSS、BootStrap等技术搭建界面平台&#xff0c;后端使用Django框架处理请求&#xff0c;并基于Ajax等技术实现前端与后端的数据通信。在音乐个性推荐功能模块中采用通过Python编写协…

配置Raspberry自动连接WIFI,在无法查看路由器的校园网情况下使用自己电脑热点

1、开启电脑热点&#xff0c;并共享电脑WLAN2 打开控制面板->网络和Internet->网络连接 选择自己的校园网&#xff0c;我这里是WLAN2&#xff0c;右键属性&#xff0c;如下操作&#xff1a; 如果没有看到 本地连接*10类似的图标 则按如下操作&#xff1a;winx键&#x…

【ChatOCR】OCR+LLM定制化关键信息抽取(附开源大语言模型汇总整理)

目录 背景技术方案存在的问题及解决思路关键信息提取结果其他解决方案替换文心一言LangChain大型多模态模型&#xff08;Large Multimodal Model, LMM&#xff09; 开源大模型汇总LLaMA —— Meta 大语言模型Stanford Alpaca —— 指令调优的 LLaMA 模型Lit-LLaMA —— 基于 na…

ADO实战指南

这里写目录标题 ADO概念ADO主要对象对象间的相互联系对象模型示意图 关键代码关于代码中的一些问题设置字符串连接对象OLE DB是什么&#xff1f;与ADO的关系是什么&#xff1f;执行命令时&#xff0c;使用连接对象来访问数据库。close与nothing做了什么事&#xff1f;连接对象为…

Linux--jdk,tomca,mysql安装、后端项目搭建

一、JDK和Tomcat的安装 1.JDK安装 直接上传到Linux服务器的&#xff0c;上传jdk、tomcat安装包 解压JDK安装包 //解压jdk tar -zxvf jdk-8u151-linux-x64.tar.gz 置环境变量(JAVA_HOME和PATH) vim /etc/profile 在文件末尾添加以下内容&#xff1a; //java environment expo…

python之range 函数

文章目录 range() 函数的语法参数说明range() 返回值使用示例&#xff1a;示例 1&#xff1a;简单使用示例 2&#xff1a;设置起始值、结束值和步长 注意事项&#xff1a; range() 是一个内置的 Python 函数&#xff0c;通常用于创建一个表示一系列数字的不可变的序列&#xff…

JAVA- 面向对象编程(上)

&#x1f308;个人主页: Aileen_0v0&#x1f525;系列专栏:PYTHON学习系列专栏&#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 面向对象的特征及理解 new Static Summary: 面向对象的特征及理解 面试题:oop的三大特征是什么? ---> 封装,继承,…

「Verilog学习笔记」异步复位的串联T触发器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 这道题目里我们有两个需要明确的点&#xff1a; 1. 什么是异步复位 2. 什么是串联的T触发器 关于第一个点&#xff0c;可以看我的这篇文章&#xff0c;已经整理好了&a…

【黑马程序员】SSM框架——SpringBoot

文章目录 前言一、SpringBoot 简介1. 入门案例1.1 入门程序① 创建新模块② 选择当前模块需要使用的技术集③ 开发控制类④ 运行自动生成的 Application 类 1.2 创建 SpringBoot 程序的两种方式1.2.1 最简 SpringBoot 程序所包含的基础文件1.2.2 基于 SpringBoot 官网创建项目 …

亚马逊 JDK下载地址

下载地址 https://docs.aws.amazon.com/corretto/选择版本 选择操作系统 比如 windows64 位 可以选择安装包或者解压版本 msi 的为安装版 zip 的为解压版