如何在Python爬虫等程序中设置和调用http代理

在Python爬虫中为了更好地绕过反爬机制,获取网页信息,有时可能需要在Python中应用代理服务,这样做的目的就是防止自己的ip被服务器封禁,造成程序运行时中断连接,那么如何在python中设置代理呢? 我们通过几个实例来看一下,其实也不麻烦。

一、在requests中设置代理

在爬虫中我最常用的是reqeusts这个模块,除了设置user-agent, cookie之外,我们还可以加上代理ip。 下面我们给出一个利用http或https代理来访问XXX网站。 其中http或https代理可以通过在服务器上安装x-ui,设置http代理用户名和密码来实现。 有时,为了避免ip被封禁,可以绑定域名,用极光面板来设置中转代理,然后采用中转的域名来访问服务器,可以加快访问速度和安全性。

import requests# 设置代理,包括用户名和密码
proxy_username = 'user' #设置代理的用户名
proxy_password = 'password' #设置代理的密码
proxy_host = 'ip:port' #这里设置服务器的域名或ip并助加上端口proxies = {'http': f'http://{proxy_username}:{proxy_password}@{proxy_host}','https': f'http://{proxy_username}:{proxy_password}@{proxy_host}',
}# 发起请求
try:response = requests.get('https://www. XXX.com', proxies=proxies) #XXX替换为你要爬取的网站print(response.text)  # 打印响应内容
except requests.exceptions.RequestException as e:print(f'请求出错: {e}')

二、在edge-tts中设置代理

最近edge-tts文本转音频的调用受到了限制,访问起来十分不便,我们可以在python实现代理服务,从而避开模块的限制。

import edge_tts
import asyncio# 设置代理,包括用户名、密码、服务器ip和端口
proxy_username = 'user'
proxy_password = 'password'
proxy_host = 'ip:port'
proxy = f'http://{proxy_username}:{proxy_password}@{proxy_host}'async def main():# 创建一个 TTS 客户端communicate = edge_tts. Communicate(text="Hello, this is a text to speech conversion.",voice="en-US-AriaNeural",proxy= proxy)# 生成音频await communicate.save("output.mp3")# 运行主函数
asyncio.run(main())

三、设置代理池proxy-pool

单个代理可能会出现失效的情况,我们可以设置一个代理池,把代理信息放到txt文件里,每次通过Python程序读取txt中的代理,随机调用代理池中的一个代理,即对代理池进行轮训,这样可以最大限度减少IP封禁的可能。这个代理也可以设置单个代理,通过get_proxy来获得。

import random
class Proxy:def __init__(self, username, password, host):self.username = usernameself.password = passwordself.host = hostdef get_proxy(self):return f'http://{self.username}:{self.password}@{self.host}'class ProxyPool:def __init__(self):self.proxies = []def add_proxy(self, username, password, host):proxy = Proxy(username, password, host)self.proxies.append(proxy)def load_proxies_from_file(self, file_path):with open(file_path, 'r') as file:for line in file:username, password, host = line.strip().split(',')self.add_proxy(username, password, host)def get_random_proxy(self):if not self.proxies:raise ValueError("Proxy pool is empty.")return random.choice(self.proxies).get_proxy()# 示例用法
if __name__ == '__main__':proxy_pool = ProxyPool()# 从文件加载代理proxy_pool.load_proxies_from_file('proxy.txt')# 随机获取一个代理random_proxy = proxy_pool.get_random_proxy()print(random_proxy) 

使用以上程序,需要我们可以把代理信息放到proxy.txt文件中,用户名、密码和服务器信息用逗号隔开,这样运行程序后,我们可以随机调用一个代理,从而模拟多人使用此项服务的目的。

四、如何随机调用代理池中的代理

我们把设置好的代理信息放到proxy.txt中格式如下图所示:

代理格式

然后,我们通过以下代码随机调用代理池中的内容,并打印出来。这样每次向服务器发请求就是随机代理,减少了程序中断的可能性。

from proxypool import ProxyPool #导入模块
proxy_pool = ProxyPool() #实例化# 从文件加载代理
proxy_pool.load_proxies_from_file('proxy.txt')# 随机获取一个代理
random_proxy = proxy_pool.get_random_proxy()# 打印出来获取的代理
print(random_proxy)

五、学后总结

一直以来,我以为Python中的代理设置非常麻烦,事实上,经常测试,其实也不难。

问题的关键是找到一个有效的http代理,并在Python程序中设置好。

这是一个Python的进阶技巧,学会这个方法,可以解决很多程序运行受限的问题。

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

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

相关文章

海思MPP音视频总结

基础篇 1.常用图像格式介绍 常用图像像素格式 RGB 和 YUV。 1.1RGB RGB分类通常指的是将图像或颜色按照RGB(红、绿、蓝)颜色空间进行分组或分类。RGB图像格式通常包括RGB24(RGB888)、RGB32、RGBA、RGB565等。 RGB24是一种常用…

预览 PDF 文档

引言 在现代Web应用中,文件预览功能是非常常见的需求之一。特别是在企业级应用中,用户经常需要查看各种类型的文件,如 PDF、Word、Excel 等。本文将详细介绍如何在Vue项目中实现 PDF 文档的预览功能。 实现原理 后端API 后端需要提供一个…

【c++ gtest】使用谷歌提供的gtest和抖音豆包提供的AI大模型来对代码中的函数进行测试

【c gtest】使用谷歌提供的gtest和抖音豆包提供的AI大模型来对代码中的函数进行测试 下载谷歌提供的c测试库在VsCode中安装抖音AI大模型找到c项目文件夹,使用VsCode和VS进行双开生成gtest代码进行c单例测试 下载谷歌提供的c测试库 在谷歌浏览器搜索github gtest, 第…

Pycharm,2024最新版Pycharm现在安装环境配置汉化详细教程!

码(文末附带精品籽料): K384HW36OBeyJsaWNlbnNlSWQiOiJLMzg0SFczNk9CIiwibGljZW5zZWVOYW1lIjoibWFvIHplZG9uZyIsImxpY2Vuc2VlVHlwZSI6IlBFUlNPTkFMIiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IiIsIm…

【论文分享】TensorTEE 24‘ASPLOS

目录 AbstractIntroductionContribution BackgroundCollaborative ComputingLLM CPU-NPU collaborative computing Memory ProtectionMemory encryption Integrity verificationHeterogeneous NPU TEEIntegrated NPU TEEDiscrete NPU TEE Threat Model MotivationInefficient C…

力扣每日一题合集

3211. 生成不含相邻零的二进制字符串 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<string> validStrings(int n) {vector<string> ans;ans.emplace_back("0");ans.emplace_back("1");for(int i 1; i < n; i)…

Vue3 中实现过渡动画的几种方式?

前言 首先抛开 vue 本身&#xff0c;假设需要给某个 Dom 元素实现一些过渡动画&#xff0c;那么下面这些事是必须的&#xff1a; 实现目标元素不同时刻下的样式&#xff0c;常见做法就是抽取在不同的 css 选择器中根据不同时刻切换不同的 css 选择器以达到样式的变化设置样式…

Linux 中,flock 对文件加锁

在Linux中&#xff0c;flock是一个用于对文件加锁的实用程序&#xff0c;它可以帮助协调多个进程对同一个文件的访问&#xff0c;避免出现数据不一致或冲突等问题。以下是对flock的详细介绍&#xff1a; 基本原理 flock通过在文件上设置锁来控制多个进程对该文件的并发访问。…

【华为HCIP实战课程二十七】中间到中间系统协议IS-IS Hello报文,网络工程师

一、IS-IS术语 1、IIH: ISIS hello 报文,相当于OSPF的Hello报文,hello-interval 10s, hold-time 30s 2、LSP:链路状态数据单元,类似OSPF的LSA,携带路由信息(L1和L2的LSP) 3、SNP:系列号PDU (1)、PSNP:部分序列号协议数据单元,类似OSPF的ACK,Request (2)、CSNP:…

python-opencv给图片或视频去水印

文章目录 引言inpaint函数的使用方法鼠标事件回调函数cv2.setMouseCallback介绍去水印步骤实现代码 引言 本文主要基于cv2.inpaint函数实现图片的水印去除。 inpaint函数基于图像修复算法&#xff0c;通过对缺陷区域周围像素的分析和插值&#xff0c;生成合适的像素值来填充缺…

渗透测试-百日筑基—文件上传篇特征截断渲染%00绕过——下篇

目录 day10-渗透测试文件上传篇&绕过&特征&截断&渲染 一、黑名单大小写绕过代码分析 1、获取文件后缀名进行判断&#xff0c;如果后缀在这个字典里就禁止上传。 2、黑名单大小写绕过攻击 二、利用 windows 系统特征绕过上传 1、windows 系统特征绕过漏洞…

C语言 | Leetcode C语言题解之第522题最长特殊序列II

题目&#xff1a; 题解&#xff1a; #define MAX(a, b) ((a) > (b) ? (a) : (b))bool is_subseq(const char *s, const char *t) {int pt_s 0, pt_t 0;int len_s strlen(s), len_t strlen(t);while (pt_s < len_s && pt_t < len_t) {if (s[pt_s] t[pt_…

STM32CUBEMX安富莱STM32-V6开发板使用FMC驱动SDRAM芯片MT48LC4M32B2TG

文章的目的是快速使用SDRAM芯片&#xff0c;没有详细讲解原理。 1、环境&#xff1a; 单片机&#xff1a;STM32F429VIT6 CUBE版本&#xff1a;STM32CUBMX 6.12.1 编译&#xff1a;KEIL MDK 硬件&#xff1a;安富莱STM32-V6开发板 SDRAM芯片&#xff1a;MT48LC4M32B2TG 2、配…

为什么QNAP威联通NAS的APP center无法安装APP?

创作立场&#xff1a;原创不易&#xff0c;拒绝搬运~ hello大家好&#xff0c;我是你们的老伙伴&#xff0c;稳重的大王~ 如题&#xff0c;大王带你一起来排查一下&#xff0c;可能遇到的问题。如有帮助&#xff0c;请给个关注鼓励&#xff0c;互谢~ 1 首先&#xff0c;安装…

人工智能算法之粒子群优化算法

人工智能算法之粒子群优化算法 粒子群优化算法&#xff08;PSO&#xff09;是一种群体智能优化算法&#xff0c;由Kennedy和Eberhart在1995年提出&#xff0c;灵感来源于鸟群、鱼群等生物群体行为。PSO通过群体中个体的交互及对周围环境的感知&#xff0c;快速找到最优解。PSO算…

【深入浅出】深入浅出transformer(附面试题)

本文的目的是为了帮助大家面试transformer&#xff0c;会结合我的面试经历以及看法去讲解transformer&#xff0c;并非完整的技术细致讲解&#xff0c;介意请移步。 结构 提到transformer网络模型&#xff0c;大家脑海中是否有这张图呢&#xff1f; 这是网络结构中经典的编解…

net 获取本地ip地址,net mvc + net core 两种

net mvc public static string GetIP(HttpRequestBase request){// 尝试获取 X-Forwarded-For 头string result request.Headers["X-Forwarded-For"]?.Split(,).FirstOrDefault()?.Trim();if (string.IsNullOrEmpty(result)){// 获取用户的 IP 地址result reques…

Handler、Looper、message进阶知识

Android Handler、Looper、Message的进阶知识 在Android开发中&#xff0c;Handler、Looper和Message机制是多线程通信的核心。为了深入理解并优化它们的使用&#xff0c;尤其是在高并发和UI性能优化中&#xff0c;可以利用一些高级特性。 1. Handler的高阶知识 Handler在基本…

开源一款基于 JAVA 的仓库管理系统,支持三方物流和厂内物流,包含 PDA 和 WEB 端的源码

大家好&#xff0c;我是一颗甜苞谷&#xff0c;今天分享一款基于 JAVA 的仓库管理系统,支持三方物流和厂内物流,包含 PDA 和 WEB 端的源码。 前言 在当前的物流仓储行业&#xff0c;企业面临着信息化升级的迫切需求&#xff0c;但往往受限于高昂的软件采购和维护成本。现有的…

Sigrity Power SI Resonance analysis模式如何进行谐振分析操作指导

Sigrity Power SI Resonance analysis模式如何进行谐振分析操作指导 Sigrity Power SI可以方便快捷的进行谐振分析,谐振分析的目的是为了分析电源地平面组成的腔体的谐振频率以及谐振幅度,让频率在谐振频率附近的信号避开谐振腔,以及添加相应的电容来降低谐振峰值. 仍然以这…