首页WIN11问题Python代理IP的使用和代理池的设置

Python代理IP的使用和代理池的设置

时间2022-12-23 15:45:06发布分享专员分类WIN11问题浏览80

熟悉python的人都知道为了python的正常请求,维持数据的稳定获取,都会用到代理IP代理设置 。代理IP不仅可以用来规避IP在单位时间的请求次数,还可以借助代理来隐藏真实的IP,避免出现“IP请求过于频繁”,“403”等报错。今天就带大家简单了解一下Python代理IP的使用和代理池怎么设置。

Python代理IP的使用和代理池的设置

一、什么是代理

代理一般指的是代理服务器Proxy Server,它的作用就是代理网络用户获取信息代理设置 。就像是一个请求的中转站,代理服务器就是请求端与目标网站之间的一个中转。使用代理之后将不是直接请求目标网站,用户的Request信号会先送到代理服务器,由代理服务器来取回所需要的信息并传送给用户。此时的被请求的目标网站所识别的IP就不是用户真实的本地IP,而是代理IP地址。这就是代理的基本原理。

二、代理的作用

1、突破自身IP访问限制访问其他不能访问的站点代理设置 。

2、访问一些单位或团体的内部资源,比如教育网的FTP资源代理设置 。

3、提高访问速度代理设置 。代理服务器通常有一个较大的硬盘缓冲区,请求信息通过后将会保存在缓冲区内。如果其他的用户访问相同的信息,这时返回的内容将从缓冲区直接返回,提高访问速度。

4、隐藏真实IP,可以利用代理服务器隐藏自己的真实IP信息代理设置 。

三、 Python requests如何使用代理

python的requests请求设置代理只需要传递一个参数:proxies即可

import requests

proxies = {

'',

'',

res = requests.get(")

print(res.json())

返回内容如下

"ip": "203.160.80.166",

"city": "Hong Kong",

"region": "Central and Western",

"country": "HK",

"loc": "22.2783,114.1747",

"org": "AS10099 China Unicom Global",

"timezone": "Asia/Hong_Kong",

"readme": ""

四、代理池的设置

代理池就是将代理服务器的IP存储到临时数据库中,实现随用随取代理设置 。既可以将免费的代理网站的IP及时存进去,也可以避免了收费代理api的请求限制。

1.如何设计代理池

代理池一般分为三个部分:收集代理,存储代理和使用代理,从收集到存储或者是从存储到使用,期间可以对使用的代理做检测,本文暂不提及代理设置 。

收集代理:就是指从指定的目标源获取到代理服务器的IP之后存到历史数据库代理设置 。

存储代理:负责存储从目标网站的代理服务器IP,通常使用redis代理设置 。

使用代理:直接从临时数据库获取提取过来的IP或者以接口的形式返回代理设置 。

2.收集和存储代理

本次使用的是redis的列表(List)对代理进行存储代理设置 ,当然对去重有要求的话可以使用redis的有序集合(sorted set)

在redis数据库中建立一个叫做“Proxy”的list代理设置 ,将获取到的IP进行存储:

import requests

import redis

redisHost = '127.0.0.1'

redisPort = 6379

redisPool = redis.ConnectionPool(host=redisHost, port=redisPort, password='', db=1)

redisCon = redis.Redis(connection_pool=redisPool)

def get_IP():

IpApi = "url"

res = requests.get(IpApi).json()["data"]

for ip in res:

ipInfo = f"']}"

redisCon.rpush("Proxy",ipInfo)

if __name__ == '__main__':

get_IP()

这里使用的是ipidea的代理api代理设置 ,将获取的服务器地址存入了redis的列表中:

Python代理IP的使用和代理池的设置

3.使用代理

使用代理的话就从redis的Proxy队列代理设置 ,使用redis的pop方法取到服务器IP:

def GetIpFromRedis():

serverIp = redisCon.lpop("Proxy")

print(serverIp.decode())

4.可持续化代理池

为了保证代理池的IP量位置在某一水平,可以使用redis中的llen方法对队列的长度进行检测代理设置 。使用while循环,如果IP量低于一定的阈值就获取代理地址并存储,否则就跳过本次while循环:

def get_IP():

while True:

if redisCon.llen("Proxy") < 100:

IpApi = "url"

res = requests.get(IpApi).json()["data"]

for ip in res:

ipInfo = f"']}"

redisCon.rpush("Proxy",ipInfo)

else:

pass

五、总结

在互联网不断发展,信息数据庞大的今天,python已经取代了过去传统的依靠人力搜集信息的方式,成为了目前最为主流的数据获取方法代理设置 。使用代理IP并不是抓取数据的唯一方法,但它为python带来了诸多好处,是python最可靠的选择。

IPIDEA作为一家全球互联网大数据IP资源服务商代理设置 。目前,已与全球数万家企业达成深度合作,是世界500强公司都在使用的代理网络和数据收集工具。IPIDEA一直致力于连接人与信息,为全球用户提供优质的数据采集解决方案。

爱资源吧版权声明:以上文中内容来自网络,如有侵权请联系删除,谢谢。

Python池的设Python池的设代理设置
云叶心源自天盈易购,三级代理模式当真是零风险、高回报? “安全卫士”和“电脑管家”现在是否有必要安装