什么是IP代理?
Ip代理服务器,其功能是代理网络用户去获取网络信息,形象的说就是网络信息的中转站。
为什么爬虫要使用代理?
让目标服务器以为不是同一个客户端在请求,防止因为ip发送过多而被反爬。
防止我们的真实ip被泄露,防止被追究责任。
正向代理:
它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求。
在天朝用浏览器访问 www.google.com 时,被残忍的拒绝了,于是你可以在国外搭建一台代理服务器,让代理帮我去请求google.com,代理把请求返回的相应结构再返回给我。
反向代理:
隐藏了真实的服务端,反向代理服务器会帮我们把请求转发到真实的服务器那里去。Nginx就是性能非常好的反向代理服务器,用来做负载均衡。
eg:拨打10086客服电话,可能一个地区的10086客服有几个或者几十个,你永远都不需要关心在电话那头的是哪一个,叫什么,男的,还是女的,漂亮的还是帅气的,你都不关心,你关心的是你的问题能不能得到专业的解答,你只需要拨通了10086的总机号码,电话那头总会有人会回答你,只是有时慢有时快而已。那么这里的10086总机号码就是我们说的反向代理。客户不知道真正提供服务人的是谁。
两者的区别在于代理的对象不一样:
正向代理代理的对象是客户端,反向代理代理的对象是服务端
使用代理
用法:requests.get(“https://www.baidu.com“, proxies = proxies)
proxies的形式:字典
proxies = {
“http”: “http://12.34.56.79:95**”,
“https”: “https://12.34.56.79:95**”,
}
以今日头条为例
# coding=utf-8
import requests
# 导入模块
# 构建url
url = 'https://www.toutiao.com'
# 构建请求头
headers = {'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
# 构建代理
proxies = {
'http': 'http://115.223.19*.2**',
'http': 'http://121.232.19*.1**'
}
# 代理請求代理
resqonse = requests.get(url, headers=headers, proxies=proxies)
#保存数据
with open('toutiao.html', 'wb') as f:
f.write(resqonse.content)
# 打印代理url
print(resqonse.url)