我正在尝试伪造用户代理并在 Python 中轮换它们。
我在网上找到了一个关于如何使用scrapy-useragents包使用 Scrapy 执行此操作的教程。
我抓取网页https://www.whatsmyua.info/,以检查我的用户代理,看看它是否与我的不同以及它是否旋转。它与我的实际用户代理不同吗,但它不会轮换,它每次都会返回相同的用户代理,而且我无法弄清楚出了什么问题。
设置.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 …Run Code Online (Sandbox Code Playgroud) 尝试使用 Google Apps 脚本从网站获取数据,并将其直接放入电子表格中。fetch 似乎不起作用,而 Python requests 的等效项工作得很好。
Python代码:
page = requests.get("someurl?as_data_structure", headers={'user-agent':'testagent'})
Run Code Online (Sandbox Code Playgroud)
气体代码:
var page = UrlFetchApp.fetch("someurl?as_data_structure", headers={'user-agent':'testagent'});
Run Code Online (Sandbox Code Playgroud)
唯一需要的标头是用户代理,如果我没有包含标头,我从 GAS 代码中得到的错误就是我通常从 Python 代码中得到的错误。我是 js 新手,但据我所知这是正确的方法..?
编辑:现在标题位于正确的位置,但问题仍然存在,与以前的错误完全相同。
var options = {"headers": {"User-Agent": "testagent"}};
var page = UrlFetchApp.fetch("someurl?as_data_structure", options);
Run Code Online (Sandbox Code Playgroud) user-agent http-headers urlfetch http-status-code-403 google-apps-script
我还在尝试从这种URL中抓取搜索结果,这是一份中文在线报纸的搜索结果。Scrapy 适用于一些请求,然后我得到以下终端输出。
2019-12-19 11:56:19 [scrapy.spidermiddlewares.httperror] INFO: 忽略响应 <461 http://so.news.cn/getNews?keyword=%E7%BE%8E%E5%9B%BD&curPage= 55&sortField=0&searchFields=0&lang=cn >:HTTP状态码未处理或不允许
如果我添加延迟似乎效果更好,但是速度很慢。这是因为我被该网站屏蔽了 - 我能做些什么吗?我目前没有在 settings.py 中定义任何特殊的用户代理。我尝试过使用scrapy-UserAgent来轮换用户代理,但它似乎不起作用。VPN 有帮助吗?
谢谢
最近,我从 .json 文件中询问了这个随机用户代理,但问题是,在我添加了 puppeteer 的“捕获屏幕”后,它一直显示无头镶边,所以我将上一个主题答案复制到了错误的位置。
现在真正的useragent js页面来自这个页面:
const browser = await puppeteer.launch({
headless: false,
args: ['--headless', '--disable-infobars', '--user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36', '--no-sandbox', `--proxy-server=socks5://127.0.0.1:${port}`] : ['--no-sandbox'],
Run Code Online (Sandbox Code Playgroud)
});
那么如何在参数中创建 rnadom 列表呢?我之前的帮助对我不起作用,因为随机用户代理代码不在正确的位置:Puppeteer browser useragent list
但是在其中添加该代码是行不通的。
那么之后--user-agent=我想添加“ random”功能但是如何呢?
我使用的是firefox,我修改了它的用户代理,使其行为像iphone web浏览器.现在,当我使用watir打开google.com时,现在我想点击searh按钮,这是移动视图中的图像.怎么做.
我想使用Request.Browser属性(HttpBrowserCapabilities类)来确定客户端系统的一些属性.
但是我似乎遇到了这个类的一些限制.我找不到一些应该相对容易从UserAgent字符串中解析的属性,比如操作系统版本(Platform对于大多数Windows版本只会返回WinNT,但不会返回Vista,XP等),或者它是否为x64(仅限Win16和Win32属性).
我原本希望在HttpBrowserCapabilities类中看到这些属性,因为大多数其他用户代理信息都在那里.我错过了什么吗?我可以在其他地方找到这些信息吗?或者我应该自己从UserAgent字符串解析它?
根据以下文档:https://developers.google.com/chrome/mobile/docs/user-agent
这是Chrome for iOS UA字符串:
Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3
Run Code Online (Sandbox Code Playgroud)
这里是iOS UA字符串的Safari:
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3
Run Code Online (Sandbox Code Playgroud)
尽管我可以说明未来的不同之处将是Chrome包含"CriOS".我希望能够区分这两个浏览器,并因此设置使用正则表达式.
使用:
/Gecko\) (?!CriOS)/
Run Code Online (Sandbox Code Playgroud)
我能做到这一点,但我是偏执狂,因为我不在表达式中包含iPhone(也许这也会在Android上触发等)
我想编写以下正则表达式,在以下情况下返回匹配:
我该怎么做呢?
仅供参考我一直在使用rubular来测试reg exp,它非常棒http://rubular.com/
我们有一堆围绕Mojo :: UserAgent构建的代码,并且迁移到MojoX :: UserAgent不是一个选择.我想知道是否有办法在Mojo :: UserAgent中获取/设置用户代理字符串?
我正在使用HtmlAgilityPack从网页中获取表格.
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("http://test.com");
Run Code Online (Sandbox Code Playgroud)
我知道HtmlWeb有一个UserAgent属性,但是我不知道我应该如何将用户代理附加到httprequest的头部.
HtmlWeb web = new HtmlWeb().UserAgent("asdf");
Run Code Online (Sandbox Code Playgroud)
返回错误
Error 1 Non-invocable member 'HtmlAgilityPack.HtmlWeb.UserAgent' cannot be used like a method.
Run Code Online (Sandbox Code Playgroud)
http://htmlagilitypack.codeplex.com/discussions HtmlAgilityPack支持讨论只是问题,但没有人在另一端做出回应.
http://htmlagilitypack.codeplex.com/documentation这里还没有文档.
http://htmlagilitypack.codeplex.com/downloads/get/437942尝试下载文档,发现chm文件似乎已损坏...当我尝试打开任何内容时,我正在获取导航到网页时出错chm文档.
我希望仅限制我的webapp用于手持设备,并完全禁用桌面.
有大量的库可用于设备检测,但所有的嗅探用户代理都很容易被伪造.是否有任何超出UA的库并使用其他检查来确保设备确实是掌上电脑?
user-agent ×10
c# ×2
python ×2
scrapy ×2
.net ×1
asp.net ×1
device ×1
firewatir ×1
http-headers ×1
javascript ×1
mojo ×1
mojolicious ×1
perl ×1
puppeteer ×1
random ×1
regex ×1
ruby ×1
urlfetch ×1
watir ×1
web-scraping ×1