目录
- 实现效果
- 实现思路
- 代码示例
- 总结
欢迎关注 『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<ime=&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<ime=&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爬虫』 专栏,持续更新中
『未完待续』