📜  fake-useragent 代理 webscraping 浏览器更改 - Python (1)

📅  最后修改于: 2023-12-03 15:15:02.403000             🧑  作者: Mango

以'fake-useragent 代理 webscraping 浏览器更改 - Python '作主题

简介

当我们进行网页抓取时,我们通常会使用爬虫工具导入一个目标网站的文本数据,但有时候我们会遇到一些反爬虫机制,因为访问该网站的爬虫会被该网站拒绝访问。为了破解这种反爬虫机制,我们需要使用一些技术手段,如使用代理服务器或更改请求头中的User-Agent等。

这里介绍的是使用Python中的fake-useragent库来伪装请求头中的User-Agent。

fake-useragent

fake-useragent 是一个Python库,可以生成随机的User-Agent头信息,从而伪装成不同的浏览器进行访问。

安装

你可以使用pip来安装 fake-useragent

pip install fake-useragent
使用

下面的代码片段展示了如何使用 fake-useragent 库来修改 User-Agent 头信息:

from fake_useragent import UserAgent
import requests

url = 'https://www.whatismybrowser.com/detect/what-is-my-user-agent'
# 生成一个随机的User-Agent字符串
headers = {'User-Agent': UserAgent().random}

r = requests.get(url, headers=headers)
print(r.content.decode())

在上面的示例中,首先我们生成了一个随机的 User-Agent 字符串,然后通过requests库的get函数去请求一个url。

代理

使用fake-useragent库伪装User-Agent头信息可以一定程度上掩盖我们的爬虫行为,但有时候我们还需要使用代理服务器来隐藏我们的真实IP地址,防止被目标网站的反爬虫机制所拦截。

在Python中,代理服务器可以通过在requests库的get或post函数中传递proxies参数来设置。

import requests
from fake_useragent import UserAgent

url = 'https://www.whatismybrowser.com/detect/what-is-my-user-agent'
# 设置代理服务器
proxies = {'http': 'http://username:password@ip:port', 'https': 'https://username:password@ip:port'}
# 生成一个随机的User-Agent字符串
headers = {'User-Agent': UserAgent().random}

r = requests.get(url, headers=headers, proxies=proxies)
print(r.content.decode())

在上面的示例中,我们在requests的get函数中传递了一个proxies参数,代理服务器的地址、端口号、用户名和密码都被设置在里面。

使用代理服务器时,需要注意:

  • 如果代理服务器需要用户名和密码认证,我们还需要在代理服务器的地址和端口号前面加上用户名和密码;
  • 如果使用https协议,则要使用https代理服务器;
  • 如果使用http协议,则可以使用http或https代理服务器;

同时,还可以使用其他代理库来替代requests,例如urllib,treq,Scrapy等。

结论

虽然fake-useragent库可以生成伪造的 User-Agent头信息,但是有些网站会检测终端运行Python的机器和浏览器的差异来判断是否允许爬虫访问,这时候我们还需要使用代理服务器。

在我们进行Web抓取时,我们应该遵守以下规则:

  • 1.尊重网站的Robots协议;
  • 2.保持友好和真诚的爬取行为;
  • 3.当遇到反爬虫机制时,寻找对应的解决方案。
参考资料
  • fake-useragent库:https://pypi.org/project/fake-useragent/
  • requests官网:https://docs.python-requests.org/en/latest/
  • 知乎专栏:https://zhuanlan.zhihu.com/p/48400059