-
-
Save noyobo/35beed0aae3406011a3d to your computer and use it in GitHub Desktop.
Chrome User-Agent String Modification
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var listenerIsActive = true, | |
requestFilter = { | |
urls: [ "<all_urls>" ] | |
}, | |
extraInfoSpec = ['requestHeaders','blocking'], | |
handler = function( details ) { | |
var headers = details.requestHeaders, | |
blockingResponse = {}; | |
if( !listenerIsActive ) { | |
// If you take this approach, just make sure you return | |
// the headers, or else your "disabled" listener will | |
// delete all headers from future requests! | |
return {requestHeaders: details.requestHeaders}; | |
} | |
// Your code here... | |
}; | |
chrome.webRequest.onBeforeSendHeaders.addListener( handler, requestFilter, extraInfoSpec ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The 'reqestFilter' parameter allows you to only listen for | |
// certain requests. Chrome 17 requires that, at the very least, | |
// it defines the URLs you wish to subscribe to. In the general | |
// case, we want to subscribe to all URL's, so we'll explicitly | |
// declare this requirement. | |
var requestFilter = { | |
urls: [ "<all_urls>" ] | |
}, | |
// The 'extraInfoSpec' parameter modifies how Chrome calls your | |
// listener function. 'requestHeaders' ensures that the 'details' | |
// object has a key called 'requestHeaders' containing the headers, | |
// and 'blocking' ensures that the object your function returns is | |
// used to overwrite the headers | |
extraInfoSpec = ['requestHeaders','blocking'], | |
// Chrome will call your listener function in response to every | |
// HTTP request | |
handler = function( details ) { | |
var headers = details.requestHeaders, | |
blockingResponse = {}; | |
// Each header parameter is stored in an array. Since Chrome | |
// makes no guarantee about the contents/order of this array, | |
// you'll have to iterate through it to find for the | |
// 'User-Agent' element | |
for( var i = 0, l = headers.length; i < l; ++i ) { | |
if( headers[i].name == 'User-Agent' ) { | |
headers[i].value = '>>> Your new user agent string here <<<'; | |
break; | |
} | |
// If you want to modify other headers, this is the place to | |
// do it. Either remove the 'break;' statement and add in more | |
// conditionals or use a 'switch' statement on 'headers[i].name' | |
} | |
blockingResponse.requestHeaders = headers; | |
return blockingResponse; | |
}; | |
chrome.webRequest.onBeforeSendHeaders.addListener( handler, requestFilter, extraInfoSpec ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[ | |
{"name":"Pragma","value":"no-cache"}, | |
{"name":"User-Agent","value":"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.15 Safari/535.1"}, | |
{"name":"Accept","value":"text/css,*/*;q=0.1"}, | |
{"name":"Cache-Control","value":"no-cache"}, | |
{"name":"Referer","value":"http://mikepennisi.com/"}, | |
{"name":"Accept-Encoding","value":"gzip,deflate,sdch"}, | |
{"name":"Accept-Language","value":"en-US,en;q=0.8"}, | |
{"name":"Accept-Charset","value":"ISO-8859-1,utf-8;q=0.7,*;q=0.3"}, | |
{"name":"Cookie","value":"__utma=138710319.518446708.1311977381.1311977381.1311977381.1; __utmz=138710319.1311977381.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); ci_session=6YkLJxXZRFbZ5DLlpFCL8KG3cnggPjSvEtP7VCNRTv4JLphOrHGUqPX3pfOuURl0cfbMb9Gu4%2FcNnsxZyiTNxH%2B0hXZ4pElZush0NJNHHD7ReOV2hoHWRaDX1ikw4vWamoyB8WvLftxotbKX4ibITIwqBlQ0mqq%2BcIQRn5uW0ueFgwzt43b5Q6KBGYJ2RMXZrrT%2FgB0ViV8dofvXNmQ8qFueXOlotnnWx1KcTWyyiWDOIia2%2Bm5ZuknlbmvFMk5czOMf5y70S4oaK7iup7gAlaPSVD9%2FZE%2BzslzuCvvyiXM%3D"} | |
] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment