def test_feature_vendor(): for _ in range(50): nav = generate_navigator_js(navigator='chrome') assert nav['vendor'] == 'Google Inc.' nav = generate_navigator_js(navigator='firefox') assert nav['vendor'] == '' nav = generate_navigator_js(navigator='ie') assert nav['vendor'] == ''
def test_feature_vendor(): for _ in range(50): nav = generate_navigator_js(navigator='chrome') assert nav['vendor'] == 'Google Inc.' nav = generate_navigator_js(navigator='firefox') assert nav['vendor'] == '' nav = generate_navigator_js(navigator='ie') assert nav['vendor'] == ''
def test_android_firefox(): for _ in range(50): nav = generate_navigator_js(os='android', navigator='firefox') assert 'armv' in nav['platform'] assert 'Linux armv' in nav['oscpu'] assert 'Android' in nav['userAgent'].split('(')[1].split(')')[0] assert 'Android' in nav['appVersion']
def test_android_firefox(): for _ in range(50): nav = generate_navigator_js(os='android', navigator='firefox') assert 'armv' in nav['platform'] assert 'Linux armv' in nav['oscpu'] assert 'Android' in nav['userAgent'].split('(')[1].split(')')[0] assert 'Android' in nav['appVersion']
async def cloak_navigator(self): """ Emulate another browser's navigator properties and set webdriver false, inject jQuery. """ self.navigator_config = generate_navigator_js(os=self.os, navigator=("chrome")) self.navigator_config.update(self.navigator_defaults) await self.resync_navigator()
def query(q, debug=False): req = Request( quote("https://duckduckgo.com/lite/?q={0}".format(q), ':/?=')) req.add_header("User-Agent", generate_navigator_js()["userAgent"]) try: return Result.get_all(make_soup(urlopen(req).read())) except Exception as e: if debug: print(e) return None
def test_generate_navigator_js(): for _ in range(50): nav = generate_navigator_js() assert set(nav.keys()) == set([ 'appCodeName', 'appName', 'appVersion', 'platform', 'userAgent', 'oscpu', 'product', 'productSub', 'vendor', 'vendorSub', 'buildID', ]) assert nav['appCodeName'] == 'Mozilla' assert nav['appName'] in ('Netscape', 'Microsoft Internet Explorer')
def test_generate_navigator_js(self): for x in range(100): nav = generate_navigator_js() self.assertEqual( set([ 'appCodeName', 'appName', 'appVersion', 'platform', 'userAgent', 'oscpu' ]), set(nav.keys())) self.assertEqual(nav['appCodeName'], 'Mozilla') self.assertTrue(nav['appName'] in ('Netscape', 'Microsoft Internet Explorer'))
def test_generate_navigator_js(): for _ in range(50): nav = generate_navigator_js() assert set(nav.keys()) == set([ 'appCodeName', 'appName', 'appVersion', 'platform', 'userAgent', 'oscpu', 'product', 'productSub', 'vendor', 'vendorSub', 'buildID', ]) assert nav['appCodeName'] == 'Mozilla' assert nav['appName'] in ('Netscape', 'Microsoft Internet Explorer')
async def cloak_navigator(self): """Emulate another browser's navigator properties and set webdriver false, inject jQuery. """ jquery_js = await util.load_file(self.jquery_data) override_js = await util.load_file(self.override_data) navigator_config = generate_navigator_js(os=("linux", "mac", "win"), navigator=("chrome")) navigator_config["webdriver"] = False dump = json.dumps(navigator_config) _navigator = f"const _navigator = {dump};" await self.page.evaluateOnNewDocument( "() => {\n%s\n%s\n%s}" % (_navigator, jquery_js, override_js)) return navigator_config["userAgent"]
def script_ua(): parser = ArgumentParser() parser.add_argument("-e", "--extended", action="store_true", default=False) parser.add_argument("-o", "--os") parser.add_argument("-n", "--navigator") parser.add_argument("-d", "--device-type") opts = parser.parse_args() nav = generate_navigator_js(os=opts.os, navigator=opts.navigator, device_type=opts.device_type) if opts.extended: print(json.dumps(nav, indent=2)) else: print(nav["userAgent"])
def script_ua(): parser = ArgumentParser() parser.add_argument('-e', '--extended', action='store_true', default=False) parser.add_argument('-o', '--os') parser.add_argument('-n', '--navigator') parser.add_argument('-d', '--device-type') opts = parser.parse_args() nav = generate_navigator_js(os=opts.os, navigator=opts.navigator, device_type=opts.device_type) if opts.extended: print(json.dumps(nav, indent=2)) else: print(nav['userAgent'])
def script_ua(): parser = ArgumentParser() parser.add_argument('-e', '--extended', action='store_true', default=False) parser.add_argument('-o', '--os') parser.add_argument('-n', '--navigator') parser.add_argument('-d', '--device-type') opts = parser.parse_args() nav = generate_navigator_js(os=opts.os, navigator=opts.navigator, device_type=opts.device_type) if opts.extended: print(json.dumps(nav, indent=2)) else: print(nav['userAgent'])
async def _cloak_navigator(self): """Cloaks navigator values to emulate another browser and sets webdriver false. """ override_js = await util.load_file( settings["data_files"]["override_js"]) navigator_config = generate_navigator_js(os=("linux", "mac", "win"), navigator=("chrome")) navigator_config["webdriver"] = False dump = json.dumps(navigator_config) _navigator = f"const _navigator = {dump};" await self.page.evaluateOnNewDocument("() => {\n%s\n%s\n}" % (_navigator, override_js)) return navigator_config["userAgent"]
def test_feature_vendor_sub(): for _ in range(50): nav = generate_navigator_js(navigator='chrome') assert nav['vendorSub'] == ''
def test_feature_chrome_appversion(): for _ in range(50): nav = generate_navigator_js(navigator='chrome') assert ('Mozilla/' + nav['appVersion']) == nav['userAgent']
def test_feature_product(): for _ in range(50): nav = generate_navigator_js(navigator='chrome') assert nav['product'] == 'Gecko'
def test_feature_chrome_appversion(): for _ in range(50): nav = generate_navigator_js(navigator='chrome') assert ('Mozilla/' + nav['appVersion']) == nav['userAgent']
def test_feature_product(): for _ in range(50): nav = generate_navigator_js(navigator='chrome') assert nav['product'] == 'Gecko'
def test_feature_vendor_sub(): for _ in range(50): nav = generate_navigator_js(navigator='chrome') assert nav['vendorSub'] == ''