Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Fake User Agent for iframe

I'm new to Javascript. I have found this code to change user agent using 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);   

This code works & returns fake user agent, Though how will I set same fake user agent for iframe ?

Here is fiddle of what I'm up to : http://jsfiddle.net/ufKBE/1/

like image 542
MANnDAaR Avatar asked Aug 21 '12 15:08

MANnDAaR


2 Answers

I already answer the same question at <Load iframe content with different user agent>

For your convenient, I copied and paste the answer here:

First of all, you must create a function to change the user agent string:

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
            });
        }
    }
}

Then you need to target the iframe element:

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

You may also set an ID to the iframe and target the ID instead of all iframe elements on the page.

like image 80
Aero Wang Avatar answered Nov 12 '22 22:11

Aero Wang


That is not the right way to switch your user agent to the faked one. window.navigator = {userAgent:Custom_User_Agent} is just a javascript execution. It will simply be ignored as you refresh the page, either it is on window or within the iframe, and then the default user agent which will be sent to the server instead. If you really want to switch your user agent, it has to be the browser setting you deal with. Some browsers allow this on their settings, and some others include user agent switcher or support some kind of plugin that do this

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

The alternatives are, you can also try to access the website from the server or build your own web accessing application. These ways, you can freely alter your header or use your own customized user agent

Another way is by using AJAX. but of course it is limited by cross-origin-policy

like image 35
stack underflow Avatar answered Nov 12 '22 20:11

stack underflow