『python爬虫』ip代理池使用 协采云 账密模式(保姆级图文)


欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中

实现效果

在官网原版demo基础上小改了一下,修正了接口错误(把2023改成2024就可以了),原版demo只能测试单个ip,我这里批量测试所有(大家也别测试太狠,浪费人家服务资源)
在这里插入图片描述


实现思路

跟客服沟通后得到测试账号.

  • 拿到proxyAPI 链接
    在这里插入图片描述
#API链接   后台获取链接地址
proxyAPI = "http://beichencsdn.user.xiecaiyun.com/api/proxies?action=getJSON&key=NP2FE94B34&count=4&word=浙江&rand=true&norepeat=false&detail=true&ltime=&idshow=true"
proxyusernm = "xxxxx"        #代理帐号
proxypasswd = "xxxxx"        #代理密码
url='https://2024.ip138.com/'
#测试ip 接口(注意2024.2.27 官网下载的demo中 这里的接口错误的,我已经把他原本的2023改成2024了,当时测试的时候卡了我半天还以为是接口的问题测了半天```)

  • 根据客服说明,账密模式可以比白名单模式快30%,大部分的ip代理池都是支持api这种的,所以这里也不研究白名单了.我们拿到的r里面就是一个json数组,包含了ip信息.
r = requests.get(proxyAPI)
  • ip信息组装后得到ip代理url
            # 组装得到单个ip url
            # 单个ip的格式 http://用户名:密码@ip地址:端口
            proxy_url = "http://" + proxyusernm + ":" + proxypasswd + "@" + p["ip"] + ":" + "%d" % p["port"]
            
  • 测试响应时间
            try:
                t1 = time.time()#计时开始
                # 使用ip代理 访问目标的ip检测网站接口
                response = requests.get(url, proxies={'http': proxy_url, 'https': proxy_url}, headers={
                    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
                    "Accept-Encoding": "gzip, deflate",
                    "Accept-Language": "zh-CN,zh;q=0.9",
                    "Cache-Control": "max-age=0",
                    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
                })
                t2 = time.time()#计时结束
                print(f"成功使用代理 {proxy_url} 访问网站,时间差: {t2 - t1}")
                print(response.text)#访问网页返回的源码
            except Exception as e:
                print(f"使用代理 {proxy_url} 访问网站出错:{e}")

代码示例

批量获取ip并测试可用性

import requests
import json
import time

#API链接   后台获取链接地址
proxyAPI = "http://beichencsdn.user.xiecaiyun.com/api/proxies?action=getJSON&key=NP2FE94B34&count=4&word=浙江&rand=true&norepeat=false&detail=true&ltime=&idshow=true"
proxyusernm = "XXXXXXXX"        #代理帐号
proxypasswd = "XXXXXXXX"        #代理密码
url='https://2024.ip138.com/'      #测试ip 接口(注意2024.2.27 官网下载的demo中 这里的接口错误的,我已经把他原本的2023改成2024了,当时测试的时候卡了我半天还以为是接口的问题测了半天```)

#获取代理 IP 地址列表
r = requests.get(proxyAPI)
if r.status_code == 200:
    proxy_list = json.loads(r.text).get("result", [])
    if proxy_list:
        for p in proxy_list:
            # 组装得到单个ip url
            # 单个ip的格式 http://用户名:密码@ip地址:端口
            proxy_url = "http://" + proxyusernm + ":" + proxypasswd + "@" + p["ip"] + ":" + "%d" % p["port"]
            try:
                t1 = time.time()#计时开始
                # 使用ip代理 访问目标的ip检测网站接口
                response = requests.get(url, proxies={'http': proxy_url, 'https': proxy_url}, headers={
                    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
                    "Accept-Encoding": "gzip, deflate",
                    "Accept-Language": "zh-CN,zh;q=0.9",
                    "Cache-Control": "max-age=0",
                    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
                })
                t2 = time.time()#计时结束
                print(f"成功使用代理 {proxy_url} 访问网站,时间差: {t2 - t1}")
                print(response.text)#访问网页返回的源码
            except Exception as e:
                print(f"使用代理 {proxy_url} 访问网站出错:{e}")
    else:
        print('获取0个代理IP')
else:
    print('获取代理失败')

测试单个ip(你已经知道ip和端口)同时注意ip时效性,过一会会失效.


import requests
import time

url='https://2024.ip138.com/'
proxyaddr = "xxxxxxxxxx"    #代理IP地址
proxyport = xxxxxx               #代理IP端口
proxyusernm = "xxxxxxxxx"        #代理帐号
proxypasswd = "xxxxxxxxxx"        #代理密码
#name = input();
proxyurl="http://"+proxyusernm+":"+proxypasswd+"@"+proxyaddr+":"+"%d"%proxyport

t1 = time.time()
r = requests.get(url,proxies={'http':proxyurl,'https':proxyurl},headers={
    "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
    "Accept-Encoding":"gzip, deflate",
    "Accept-Language":"zh-CN,zh;q=0.9",
    "Cache-Control":"max-age=0",
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"})
r.encoding='gb2312'

t2 = time.time()

print(r.text)
print("时间差:" , (t2 - t1));

下面是网上的信息,大家随便找类似的都可以,大部分的代理池调用都一样.(只实测保证本示例代码可用性,其他不保证)
在这里插入图片描述


总结

大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2023 mzh

Crated:2023-3-1

欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中
『未完待续』


  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发现你走远了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值