python伪装ip_python爬虫17 | 听说你又被封 ip 了,你要学会伪装好自己,这次说说伪装你的头部...

本文通过实例讲述了Python爬虫在访问网站时如何避免因频繁请求被封IP的方法,主要讲解了伪装HTTP Header的重要性,以及如何设置User-Agent来模拟浏览器行为,降低被识别为爬虫的风险。
摘要由CSDN通过智能技术生成

这两天

有小伙伴问小帅b

为什么我爬取 xx 网站的时候

不返回给我数据

而且还甩一句话给我

“系统检测到您频繁访问,请稍后再来”

186606921_1_2020032706323272.jpeg

小帅b看了一下他的代码

fori inrange(1,10000):

requests.get(url)

瞬间震惊了

这就感觉

被连续 fxxk 了 1w 次

你说对方受得了?

186606921_2_20200327063232650.jpeg

不封你 IP 封谁?

要会伪装

要想想看

人是怎么访问网站的

这次我们来说说伪装 Header

186606921_3_20200327063233260.gif

那么

接下来就是

学习python的正确姿势

186606921_4_20200327063233885.jpeg

当你要去爬取某个网站的数据的时候

你要想想看

如果是别人爬取你的数据

你会做什么操作

你是不是也不想

让别人随随便便就疯狂请求你的服务器

你是不是也会

采取一定的措施

186606921_5_20200327063234525.gif

比如

小帅b有一个网站

你分析到了小帅b的地址

当你想要通过 python 来爬取的时候...

小帅b来写一个简单的可以被请求的例子from flask import Flaskapp = Flask(__name__)@app.route('/getInfo')def hello_world():return "这里假装有很多数据"if __name__ == "__main__":app.run(debug=True)

ok

假设你现在分析到了小帅b的地址了

也就是可以通过 /getInfo 就可以获取到小帅b网站上的数据了

你感觉很爽

就开始请求了url = 'http://127.0.0.1:5000/getInfo'response = requests.get(url)print(response.text)

没错

这个时候你确实获取到数据了

186606921_6_20200327063235135.jpeg

小帅b觉得有点不对劲了

想看看请求的 header 信息@app.route('/getInfo')def hello_world():print(request.headers)return "这里假装有很多数据"if __name__ == "__main__":app.run(debug=True)

结果看到的 headers 信息是这样的Host: 127.0.0.1:5000User-Agent: python-requests/2.21.0Accept-Encoding: gzip, deflateAccept: */*Connection: keep-alive

哇靠

User-Agent: python-requests/2.21.0

居然使用 python 的库来请求

你说小帅b不封你封谁呢?

186606921_7_20200327063235775.jpeg

所以小帅b这个时候进行判断

你就获取不到数据了@app.route('/getInfo')def hello_world():if(str(request.headers.get('User-Agent')).startswith('python')):return "小子,使用爬虫是吧?滚你的"else:return "这里假装有很多数据"if __name__ == "__main__":app.run(debug=True)

你这个时候的请求if __name__ == '__main__':url = 'http://127.0.0.1:5000/getInfo'response = requests.get(url)print(response.text)

得到的结果就是

小子,使用爬虫是吧?滚你的

你已经在小帅b面前暴露了

那么怎么办呢?

伪装自己呗

python 不可以访问

浏览器可以访问呀

所以你可以修改你的请求头

你可以先在浏览器访问

然后在抓取数据的时候获取到 Header 数据

186606921_8_2020032706323741.png

当然你也可以使用 Chrome (可点击)的控制面板获取 Header

186606921_9_20200327063237650.png

有了 Header 信息之后

恩,现在的你学会假装自己是浏览器了if __name__ == '__main__':headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'}url = 'http://127.0.0.1:5000/getInfo'response = requests.get(url,headers=headers)print(response.text)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值