iframe的假用户代理

MAN*_*AaR 11 javascript iframe jquery 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);   
Run Code Online (Sandbox Code Playgroud)

此代码可以运行并返回虚假用户代理,虽然如何为iframe设置相同的虚假用户代理?

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

Aer*_*ang 5

我已经在 <使用不同的用户代理加载 iframe 内容>回答了相同的问题

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

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

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
            });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你需要定位 iframe 元素:

setUserAgent(document.querySelector('iframe').contentWindow, 'MANnDAaR Fake Agent');
Run Code Online (Sandbox Code Playgroud)

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


jer*_*nho 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/

另一种选择是,您还可以尝试从服务器访问网站或构建自己的网络访问应用程序。通过这些方式,您可以自由更改标头或使用您自己的自定义用户代理

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

  • 这并不能回答问题。最初的问题是关于如何在代码中伪造用户代理,特别是如何为 iframe 设置用户代理。您将提供有关用户如何在浏览器中手动更改其用户代理的信息。 (4认同)