13

我是 Javascript 的新手。我发现此代码可以使用 Javascript 更改用户代理。

var __originalNavigator = navigator;
navigator = new Object();
navigator.__defineGetter__('userAgent', function () {
    return 'Custom';
});

var iframe='<iframe id="frame" name="widget" src ="http://www.useragentstring.com/" width="100%" height="400" marginheight="0" marginwidth="0" frameborder="no" scrolling="no"></iframe>';        

document.write("User-agent header sent: " + navigator.userAgent + iframe);   

此代码有效并返回假用户代理,但我将如何为 iframe 设置相同的假用户代理?

这是我要做的事情:http: //jsfiddle.net/ufKBE/1/

4

2 回答 2

4

我已经在 < Load iframe content with different user agent >中回答了同样的问题

为了您的方便,我在此处复制并粘贴了答案:

首先,您必须创建一个函数来更改用户代理字符串:

function setUserAgent(window, userAgent) {
    if (window.navigator.userAgent != userAgent) {
        var userAgentProp = { get: function () { return userAgent; } };
        try {
            Object.defineProperty(window.navigator, 'userAgent', userAgentProp);
        } catch (e) {
            window.navigator = Object.create(navigator, {
                userAgent: userAgentProp
            });
        }
    }
}

然后你需要定位 iframe 元素:

setUserAgent(document.querySelector('iframe').contentWindow, 'MANnDAaR Fake Agent');

您还可以为 iframe 设置一个 ID,并以 ID 为目标,而不是页面上的所有 iframe 元素。

于 2015-02-27T13:30:17.143 回答
2

这不是将您的用户代理切换到伪造的用户代理的正确方法。window.navigator = {userAgent:Custom_User_Agent}只是一个javascript执行。当您刷新页面时,它将被忽略,无论是在窗口上还是在 iframe 内,然后默认用户代理将被发送到服务器。如果你真的想切换你的用户代理,它必须是你处理的浏览器设置。一些浏览器在其设置中允许这样做,而另一些浏览器包括用户代理切换器或支持某种插件来执行此操作

http://www.howtogeek.com/113439/how-to-change-your-browsers-user-agent-without-installing-any-extensions/

替代方案是,您也可以尝试从服务器访问网站或构建自己的 Web 访问应用程序。这些方式,您可以自由更改标题或使用您自己的自定义用户代理

另一种方法是使用 AJAX。但当然它受到跨域策略的限制

于 2012-12-12T15:28:23.167 回答