iframe的假用户代理

时间:2012-08-21 15:07:27

标签: javascript jquery iframe user-agent

我是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);   

此代码适用&amp;返回假用户代理,虽然如何为iframe设置相同的假用户代理?

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

2 个答案:

答案 0 :(得分: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。但当然它受到跨省政策的限制

答案 1 :(得分:2)

我已在&lt; Load iframe content with different user agent&gt;

回答相同的问题

为方便起见,我复制并粘贴了答案:

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

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元素。