我试图伪造用户代理,并在Python中旋转它们。
我在网上找到了一个关于如何使用scrapy-useragents包在Scrapy中实现这一点的教程。
我抓取了网页https://www.whatsmyua.info/,以便检查我的用户代理是否与我的不同,是否旋转。它是否与我的实际用户代理不同,但它不旋转,每次返回相同的用户代理,我不知道出了什么问题。
settings.py
BOT_NAME = 'scrapy_javascript'
SPIDER_MODULES = ['scrapy_javascript.spiders']
NEWSPIDER_MODULE = 'scrapy_javascript.spiders'
# Crawl responsibly by identifying yourself (and your website) on the user-agent
#USER_AGENT = 'scrapy_javascript (+http://www.yourdomain.com)'
# Obey robots.txt rules
ROBOTSTXT_OBEY = True
DOWNLOADER_MIDDLEWARES = {
'scrapy_splash.SplashCookiesMiddleware': 723,
'scrapy_splash.SplashMiddleware': 725,
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
}
# -----------------------------------------------------------------------------
# USER AGENT
# -----------------------------------------------------------------------------
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
'scrapy_useragents.downloadermiddlewares.useragents.UserAgentsMiddleware': 500,
}
USER_AGENTS = [
('Mozilla/5.0 (X11; Linux x86_64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/57.0.2987.110 '
'Safari/537.36'), # chrome
('Mozilla/5.0 (X11; Linux x86_64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/61.0.3163.79 '
'Safari/537.36'), # chrome
('Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) '
'Gecko/20100101 '
'Firefox/55.0'), # firefox
('Mozilla/5.0 (X11; Linux x86_64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/61.0.3163.91 '
'Safari/537.36'), # chrome
('Mozilla/5.0 (X11; Linux x86_64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/62.0.3202.89 '
'Safari/537.36'), # chrome
('Mozilla/5.0 (X11; Linux x86_64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/63.0.3239.108 '
'Safari/537.36'), # chrome
]
SPLASH_URL = 'http://199.89.192.74:8050'
DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'
HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage'
3条答案
按热度按时间wfypjpf41#
在这里,您可以找到一个以JSON形式返回最常见用户代理的API:
http://51.158.74.109/useragents/?format=json
我用过这个工具,它会让你的用户代理列表总是更新最新和最常用的用户代理:https://pypi.org/project/shadow-useragent/
hujrc8aj2#
我通过创建csv文件来解决这个问题,其中包含我所有的url,它们与IP和用户代理配对,所以每次我访问网页时,我都会使用这些IP和用户代理。然后我必须覆盖我的spalsh_url在我的蜘蛛中,这样我的splash_url就等于我当时使用的代理。
SplashSpider.py
settings.py
ibrsph3r3#
看看https://www.useragents.me/,它是一个JSON格式的最新用户代理的自动更新列表(自动更新,所以即使网站被忽略,数据也不会过时)。
方便的是,他们甚至直接在网站上提供了一个Python编码的用户代理旋转器函数(截至2022年11月4日的用户代理):