安装
pip install fake-useragent
使用
from fake_useragent import UserAgent
ua = UserAgent()
print(f'ie浏览器任意版本:{ua.ie}')
print(f'火狐浏览器任意版本:{ua.firefox}')
print(f'谷歌浏览器任意版本:{ua.chrome}')
print(f'随机浏览器任意版本:{ua.random}')
代码中使用
from fake_useragent import UserAgent
import requests
ua = UserAgent()
headers = {"User-Agent": ua.random}
url = "https://wwww.baidu.com"
response = requests.get(url, headers=headers)
print(response.text)
scrapy
"""Set User-Agent header per spider or use a default value from settings"""
from scrapy import signals
class UserAgentMiddleware(object):
"""This middleware allows spiders to override the user_agent"""
def __init__(self, user_agent='Scrapy'):
self.user_agent = user_agent
@classmethod
def from_crawler(cls, crawler):
o = cls(crawler.settings['USER_AGENT'])
crawler.signals.connect(o.spider_opened, signal=signals.spider_opened)
return o
def spider_opened(self, spider):
self.user_agent = getattr(spider, 'user_agent', self.user_agent)
def process_request(self, request, spider):
if self.user_agent:
request.headers.setdefault(b'User-Agent', self.user_agent)
class RandomUserAgentMiddlware(object):
'''随机更换user-agent,基本上都是固定格式和scrapy源码中useragetn.py中UserAgentMiddleware类中一致'''
def __init__(self,crawler):
super(RandomUserAgentMiddlware,self).__init__()
self.ua = UserAgent()
self.ua_type = crawler.settings.get("RANDOM_UA_TYPE","random")
@classmethod
def from_crawler(cls,crawler):
return cls(crawler)
def process_request(self,request,spider):
def get_ua():
return getattr(self.ua,self.ua_type)
request.headers.setdefault('User-Agent',get_ua())
DOWNLOADER_MIDDLEWARES = {
'ArticleSpider.middlewares.RandomUserAgentMiddlware': 543,
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware':None,
}
RANDOM_UA_TYPE = "random"
自己构建ua
def generate_user_agent():
operating_systems = [
'Windows', 'Macintosh', 'X11', 'Linux i686', 'Linux x86_64'
]
browsers = [
('Chrome', '58.0.3029.110'),
('Firefox', '54.0'),
('Safari', '11.0'),
('Opera', '44.0.2510.1254'),
('Edge', '15.15063')
]
os = random.choice(operating_systems)
browser, version = random.choice(browsers)
user_agent = f'Mozilla/5.0 ({os}) AppleWebKit/537.36 (KHTML, like Gecko) {browser}/{version} Safari/537.36'
return user_agent
ua = generate_user_agent()
print(ua)