做过爬虫的朋友想必对 IP 代理池都有过了解,当反爬虫策略是限制 IP 的请求次数时,就需要借助代理来解决。
免费的代理往往比较贵
通常情况下,并发量不是太高,而且对 IP 的个数需求量不是很大的时候,比如每天 100 个之内,我们可以使用免费代理。
比如我使用过的免费代理池:
-
crossin 的编程教室:https://lab.crossincode.com/proxy/
-
小幻 HTTP 代理 https://ip.ihuan.me/
-
66 免费代理网 http://www.66ip.cn/
......
这些在搜索引擎上一搜简直到处都是,如果你时间比较多,可以对比哪些池子的 IP 质量更高。
当然,不怕折腾的话,甚至可以搭建自己的免费代理池,从以上免费代理网站中自己爬取,自己验证。
从自己的使用经验来看,免费 IP 池中有大量无效的 IP,看着数量不少,但真正能派上用场的,也就两位数。而且折腾的过程,先爬取,再验证,结果还不理想,无形中耗费了大量的时间和精力,因此,我说免费的代理往往比较贵。
另外,我还发现这些网站之所以提供免费代理,是因为要吸引你去访问他们的网站,让你试着用一下,用得不爽的时候他们就开始让你联系客服,开始推荐他们的 vip 服务,也就是付费代理。
付费代理,真香!
付费代理中,可以根据自己的需求定制套餐,按时间分,有包天、包月、包周、包月、包年。按 IP 是否共用,可以分为独占代理,共享代理,独占代理也叫私密代理,就是说这个代理只有你自己再用,别人无法使用,IP 的可用时间相对较长,共享代理也叫开放代理,就是大家都可以用,假如你买了开放代理,他也买了,那么你们可能会用到同一个 IP 代理。
因此,费用方面,私密代理大于开放代理。
我使用过代理云、芝麻代理、齐云代理的付费服务,由于我使用代理访问的速度相当快,使用的都是开放代理,通过个人比较下来,觉得齐云代理是做的非常不错的,使用起来非常便捷。
首先在官方网站上注册一个账号,然后就可能根据需求选取相应的套餐了,都非常便宜,如下图所示:
齐云代理套餐支付宝直接支付就可以了,支付后,点击 api 生成提取,选择私密代理或开放代理(取决于你买的是哪一类型),就可以生成 api,假如 api 的链接用 url 来表示,获取代理池(列表形式)的代理如下所示:
import json
def get_proxy_from_qydaili(sort=1):
print("get_proxy_from_qydaili")
try:
# 验证时间从近到远
url = f"http://dev.energy67.top/api/?apikey=a532619b4f871676ba7f43ce31d4885fc618bb59&num=10000&type=json&line=win&proxy_type=putong&sort={sort}&model=all&protocol=http&address=&kill_address=&port=&kill_port=&today=false&abroad=&isp=&anonymity="
content = requests.get(url, timeout=10).content
result = json.loads(content)
print(f"get {len(result)}")
return result
except Exception as e:
return []
到此,你便可以使用代理来愉快地爬虫了,requests 库 和 aiohttp 库使用代理发送请求的方法如下所示,其中 aiohttp 无法使用 https 的代理。
- requests 库
# proxy -> 10.123.11.2:8080
html = requests.get(
vote_url,
proxies={"http": f"http://{proxy}", "https": f"https://{proxy}"},
timeout=30,
)
aiohttp 库
# proxy -> 10.123.11.2:8080
proxyurl = 'http://{proxy}'
async with session.get(url, proxy=proxyurl, timeout=30) as resp:
如果是并发请求建议使用多线程或协程,可参考前文并发时用多线程还是协程 。
齐云代理官网链接
somenzz 读者的专属链接
有返现,我将自己的 API 免费供以上链接购买套餐的朋友使用,互利共享,从以上链接购买的朋友可以加我微信 somenzz。
网友评论