我将流量重定向到另一个网站,但他们进行了一些过滤,拒绝了部分流量。据我了解,他们正在解析用户代理字符串并拒绝某些浏览器。我希望能够首先过滤我这边的 UA,并在重定向它们之前根据需要替换它们。
到目前为止我已经尝试过这个:
ini_set('user_agent', "my user agent");
Run Code Online (Sandbox Code Playgroud)
但当重定向发生时,它似乎并没有真正改变任何东西。
甚至可以这样做吗?由于 UA 是在浏览器中设置的,这是否更像是 Javascript 的事情?
我很感激任何想法...谢谢!
我使用下面的代码打开对 youtube 视频的流请求,但它总是返回异常“远程服务器返回错误:NotFound”。然后我尝试使用 Fiddler 来检测问题,我看到 WebClient 自动将 User-Agent 字段设置为 NativeHost,而不是我的 User-Agent 如下。
我向 youtube 发送请求的代码:
private static Task<string> HttpGet(string uri)
{
var task = new TaskCompletionSource<string>();
var web = new WebClient();
web.OpenReadCompleted += (sender, args) =>
{
if (args.Cancelled)
task.SetCanceled();
else if (args.Error != null)
task.SetException(args.Error);
else
{
//var bytes = args.Result.ReadToEnd();
byte[] bytes = new byte[] { };
using (MemoryStream memoryStream = new MemoryStream())
{
args.Result.CopyTo(memoryStream);
bytes = memoryStream.ToArray();
task.SetResult(Encoding.UTF8.GetString(bytes, 0, bytes.Length));
}
}
};
web.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (compatible; …Run Code Online (Sandbox Code Playgroud) 我在 JS 中有一个数据层事件推送,想知道是否也可以了解触发事件的用户的用户代理。
我正在努力使用带有 swift 4.2 的最新 Xcode 版本更改我项目中的用户代理。
我想假装我是一台访问特定网站的 Mac。请编辑此代码并将其发布在评论中
到目前为止,这是我的代码。
class ViewController: UIViewController {
@IBOutlet weak var webview: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let userAgent = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36 Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10"
let myURL = NSURL(string: "http://website.com")
let myURLRequest:NSURLRequest = URLRequest(url: myURL! as URL) as NSURLRequest
webview.load(myURLRequest as URLRequest)
myURLRequest.setValue(userAgent, forKey: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) …Run Code Online (Sandbox Code Playgroud) 我的应用程序有一个奇怪的行为。某些内容在 Internet Explorer 上可以正确显示,但在 Chrome 上根本不会显示。在另一个客户端上重现错误是不可能的(它适用于两个客户端),而且我也无法在有问题的客户端上测试它,因为它正在生产中并且我无权访问。唯一的方法是首先检查日志并查看发生了什么。计划是使用 IE 和 Chrome 查看从服务器加载内容的两个请求,并尝试找出任何差异。
在日志中我看到类似这样的内容:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36
我不明白 HTTP 请求的标头中如何可能User-Agent包含三个不同的浏览器?!我如何知道请求是从哪个浏览器发出的?
我有我在本地机器上使用的代码:
from selenium import webdriver
chrom_path = r"C:\Users\user\sof\chromedriver_win32\chromedriver.exe"
driver = webdriver.Chrome(chrom_path)
link = 'https://www.google.com/'
driver.get(link)
s = driver.page_source
print((s.encode("utf-8")))
driver.quit()
Run Code Online (Sandbox Code Playgroud)
并且此代码返回该网站的页面源,但是当我在Linux服务器centos7上使用此代码时:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
driver = webdriver.Chrome(executable_path="/usr/local/bin/chromedriver", chrome_options=options)
driver.get("https://www.google.com")
s = driver.page_source
print((s.encode("utf-8")))
driver.quit()
Run Code Online (Sandbox Code Playgroud)
这段代码也应该返回页面源代码,但这段代码返回:
b'<html><head>\n<title>Access Denied</title>\n</head><body>\n<h1>Access Denied</h1>\n \nYou don\'t have permission to access "http://www.newark.com/" on this server.<p>\nReference #18.456cd417.1576243477.e007b9f\n\n\n</p></body></html>'
Run Code Online (Sandbox Code Playgroud)
有人知道为什么相同的代码在不同的操作系统上的工作方式不同吗?
python selenium user-agent selenium-chromedriver google-chrome-headless
如何在 Symfony's Panther 创建的无头 Chrome 中更改用户代理createChromeClient()?
当我创建一个 Chrome 客户端时
$client = \Symfony\Component\Panther\Client::createChromeClient();
我在 access_log 中看到一个用户代理
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/77.0.3865.90 Safari/537.36"
我搜索了解决方案,并认为我必须通过 chrome 的参数更改用户代理字符串,但找不到正确的方法,因为网络上的答案不适用于 PHP 或 Panther。
干杯!
我想知道是否可以使用 selenium 4 和 Python 在用户代理之间轮换。我的脚本创建了多个 Chrome 窗口,但所有窗口都获得相同的假用户代理。任何人都知道此时您是否可以在它创建的每个窗口之间轮换硒假用户代理?先感谢您!
更新:这是我更新的代码,即使使用 cdp (感谢更新的答案)我仍然为每个窗口获得相同的 UA。我的代码中可能有什么问题阻止了我?
所以我必须获取客户端的浏览器和操作系统名称。但问题是我们不希望用户能够操纵有关操作系统或浏览器的信息。但一些网站表明只有一种方法可以做到这一点,那就是使用请求标头 userAgent。
以下是我浏览过的链接:
所以根据这些我们只能借助userAgent来完成,而且对于客户端来说修改它并不是一件困难的事情,而且我们也没有办法检测到客户端是否修改了它。事实证明,即使是像亚马逊和 Facebook 这样的跨国公司也依赖 userAgent。
因此,在了解设备指纹时,我了解了一个名为FingerprintJs的 javascript 库,它们似乎并不依赖 userAgent 来查找客户端操作系统名称,因为我尝试使用它,结果发现在操作 userAgent 时我得到了原始的结果。我仍在试图弄清楚它们到底是如何获取操作系统和浏览器名称的。即使客户端也可以操纵它,我们仍然有办法至少让客户端很难伪造浏览器和操作系统吗?
我想从单个URL提供不同的内容,具体取决于用户是浏览器还是RSS阅读器(因此避免使用example.com/feed URL).因此,www.example.com/posts会将(X)HTML页面返回给浏览器,并将RSS源返回给源阅读器.
什么是建筑上最合适的方法来实现这一目标?
PS对于一个软球问题,这是怎么回事...... :)