当前位置: 首页 > news >正文

『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 timeurl='https://2024.ip138.com/'
proxyaddr = "xxxxxxxxxx"    #代理IP地址
proxyport = xxxxxx               #代理IP端口
proxyusernm = "xxxxxxxxx"        #代理帐号
proxypasswd = "xxxxxxxxxx"        #代理密码
#name = input();
proxyurl="http://"+proxyusernm+":"+proxypasswd+"@"+proxyaddr+":"+"%d"%proxyportt1 = 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爬虫』 专栏,持续更新中
『未完待续』


相关文章:

  • EdgeX Foundry - 连接 MQTT 设备
  • Java中Class.forName和ClassLoader.loadClass的区别
  • golang 糟糕的错误处理
  • 《辐射4》是一款什么样的游戏 怎样在mac电脑上玩到《辐射4》辐射4攻略 辐射4开局加点 怎么在Mac电脑玩Steam游戏
  • 基于SpringBoot+MYSQL的网页时装购物系统
  • 蓝桥杯复习之差分
  • 计算题--单代号双代号网络图
  • CCF-A推荐会议 安全界顶会ACM CCS‘24 4月29日第二轮投稿!共建更安全的数字世界!
  • UE5 C++ TPS开发 学习记录(七)
  • 6_怎么看原理图之协议类接口之LCD笔记
  • BUUCTF-Misc-百里挑一
  • AI领域再出“王炸“----Claude3是否会成为下一个“神“
  • 24计算机考研深大经验分享(计算机专业考研综合安排)
  • 2024.3.6 FreeRTOS 作业
  • C#,数值计算,求解微分方程的预测校正法(修正欧拉法)算法与源代码
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • canvas 高仿 Apple Watch 表盘
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • Mysql数据库的条件查询语句
  • PAT A1017 优先队列
  • php ci框架整合银盛支付
  • Service Worker
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • ------- 计算机网络基础
  • 经典排序算法及其 Java 实现
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 离散点最小(凸)包围边界查找
  • 前端技术周刊 2019-02-11 Serverless
  • 责任链模式的两种实现
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #QT(一种朴素的计算器实现方法)
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (4) PIVOT 和 UPIVOT 的使用
  • (4)STL算法之比较
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (附源码)计算机毕业设计大学生兼职系统
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (转)mysql使用Navicat 导出和导入数据库
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .NET CLR Hosting 简介
  • .NET delegate 委托 、 Event 事件
  • .NET 读取 JSON格式的数据
  • .NET 设计模式初探
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .net的socket示例
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • /run/containerd/containerd.sock connect: connection refused
  • @DateTimeFormat 和 @JsonFormat 注解详解