不讲武德的Python反爬神器『fake_useragent』

举报
灰小猿 发表于 2021/05/26 13:49:25 2021/05/26
【摘要】 Hello,大家好哇,我是灰小猿,一个超会写bug的程序猿。 学习过HTTP的小伙伴们应该都知道,我们在进行网站访问时的request请求,通常是需要添加请求头的,否则很多情况下浏览器会认为你是非法请求,从而拒绝你的请求。 因此我们在进行网站的访问的时候一般都会添加请求头,而这其中我们最常用的方法就是添加user-agent来将本次请求伪装成浏览器,这样我们在进行访问...

Hello,大家好哇,我是灰小猿,一个超会写bug的程序猿。

学习过HTTP的小伙伴们应该都知道,我们在进行网站访问时的request请求,通常是需要添加请求头的,否则很多情况下浏览器会认为你是非法请求,从而拒绝你的请求。

因此我们在进行网站的访问的时候一般都会添加请求头,而这其中我们最常用的方法就是添加user-agent来将本次请求伪装成浏览器,这样我们在进行访问网站的时候,就不会被认为是非法请求。

那么什么是user-agent呢?

User-agent又叫做用户代理,简称UA,它是一个非常特殊的字符串头,能够使得网站的服务器访问到客户所使用的操作系统、配置信息,CPU类型、浏览器版本等信息。User-Agent会告诉网站服务器,访问者是通过什么工具来请求的,如果是爬虫请求,一般会拒绝,如果是用户浏览器,就会应答。

而在通常情况下,我们一般写的爬虫会默认告诉服务器自己发送了一个Python爬取请求,而一般网站是不允许被爬虫访问的,主要原因可能是因为会涉及到商业问题。因此,我们通过更改User-Agent字段就可以轻易骗过该网站,避免触发相应的反爬机制。

而Python的fake_useragent库就很好的解决了user_agent需要手动频繁更换的问题。可以说是对于Python爬虫开发一个非常友好的反扒神器了。

接下来我和小伙伴详细介绍一下这个库的使用方法:

由于fake_useragent属于第三方库,所以我们在使用时首先需要使用相应的pip命令导入fake_useragent库,相应的pip命令如下:

pip install fake-useragent

之后在程序中导入该库,查看程序是否报错,如果没有报错则说明安装成功!

 

fake-useragent使用

在安装成功之后,该库的具体使用方法如下:

首先在程序中导入该库,

from fake_useragent import UserAgent
 

我们要使用的就是它后面的UserAgent方法,我们可以使用该方法随机生成一个请求头。

具体如下:


  
  1. from fake_useragent import UserAgent
  2. url = 'https://www.sogou.com/web'
  3. headers={
  4. 'User-Agent': UserAgent().random
  5. }
  6. res =requests.get(url=url,params=param,headers=headers)

使用上面的方法我们就可以随机生成一个请求头并且可以很好的避免请求触发反爬机制。并且也减少我们需要频繁更新请求头的麻烦性。

 

实例验证

接下来我们以一个具体的实例来进行fake_useragent库的验证,

根据我们输入的搜索信息,爬取搜狗浏览器页面数据


  
  1. # 爬取搜狗首页的页面数据
  2. import requests,os
  3. from fake_useragent import UserAgent
  4. url = 'https://www.sogou.com/web'
  5. word=input('enter a word:')
  6. param = {
  7. 'query': word
  8. }
  9. headers={
  10. 'User-Agent': UserAgent().random
  11. }
  12. res =requests.get(url=url,params=param,headers=headers)
  13. print(res.request.headers)
  14. # print(res.text)
  15. html =res.text
  16. file_name= word+'.txt'
  17. with open(file_name,'w',encoding='utf-8') as f:
  18. f.write(html)
  19. if os.path.exists(file_name):
  20. print('爬取结束')

好了,关于Python的fake_useragent库的使用就和小伙伴们分享到这里,其中有不足的地方还望大家指正一起进步!

觉得不错记得点赞关注哟!

大灰狼陪你一起进步!

 

文章来源: blog.csdn.net,作者:灰小猿,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_44985880/article/details/110882028

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。