爬虫中无头浏览器如何选择

我们日常使用浏览器的步骤为:启动浏览器、打开一个网页、进行交互。而无头浏览器指的是我们使用脚本来执行以上过程的浏览器,能模拟真实的浏览器使用场景。主要是用作爬虫,用以捕捉Web上的各类数据;这里的无头主要是指没有界面,完全是后台操作。它就是一个真实的浏览器。只是这个浏览器是无界面的。 在爬虫中使用无头浏览器有很多的注意事项,比如我们的业务场景是否适合使用无头浏览器、我们可以通过这些方面进行判别,如果目标网站反爬不是很难,可以直接通过简单的http请求进行采集,不适合使用无头浏览器方案。反之如果网站有多种验证机制,例如需要验证登录、js反爬策略,如果研发不能进行网站行为分析的情况下,建议使用无头浏览器伪装正常用户,并且需要搭配代理一起使用,代理建议使用像亿牛云提供的爬虫代理去访问网站效果会更好,这里简单的示例下使用代理的方式:

1 import string 2 import zipfile 3 4 # 代理服务器(产品官网 www.16yun.cn) 5 proxyHost = "t.16yun.cn" 6 proxyPort = "3111" 7 8 # 代理验证信息 9 proxyUser = "username" 10 proxyPass = "password" 11 12 13 def create_proxy_auth_extension(proxy_host, proxy_port, 14 proxy_username, proxy_password, 15 scheme='http', plugin_path=None): 16 if plugin_path is None: 17 plugin_path = r'/tmp/{}_{}@t.16yun.zip'.format(proxy_username, proxy_password) 18 19 manifest_json = """ 20 { 21 "version": "1.0.0", 22 "manifest_version": 2, 23 "name": "16YUN Proxy", 24 "permissions": [ 25 "proxy", 26 "tabs", 27 "unlimitedStorage", 28 "storage", 29 "<all_urls>", 30 "webRequest", 31 "webRequestBlocking" 32 ], 33 "background": { 34 "scripts": ["background.js"] 35 }, 36 "minimum_chrome_version":"22.0.0" 37 } 38 """ 39 40 background_js = string.Template( 41 """ 42 var config = { 43 mode: "fixed_servers", 44 rules: { 45 singleProxy: { 46 scheme: "${scheme}", 47 host: "${host}", 48 port: parseInt(${port}) 49 }, 50 bypassList: ["localhost"] 51 } 52 }; 53 54 chrome.proxy.settings.set({value: config, scope: "regular"}, function() {}); 55 56 function callbackFn(details) { 57 return { 58 authCredentials: { 59 username: "${username}", 60 password: "${password}" 61 } 62 }; 63 } 64 65 chrome.webRequest.onAuthRequired.addListener( 66 callbackFn, 67 {urls: ["<all_urls>"]}, 68 ['blocking'] 69 ); 70 """ 71 ).substitute( 72 host=proxy_host, 73 port=proxy_port, 74 username=proxy_username, 75 password=proxy_password, 76 scheme=scheme, 77 ) 78 print(background_js) 79 80 with zipfile.ZipFile(plugin_path, 'w') as zp: 81 zp.writestr("manifest.json", manifest_json) 82 zp.writestr("background.js", background_js) 83 84 return plugin_path 85 86 87 proxy_auth_plugin_path = create_proxy_auth_extension( 88 proxy_host=proxyHost, 89 proxy_port=proxyPort, 90 proxy_username=proxyUser, 91 proxy_password=proxyPass) 92 93 option = webdriver.ChromeOptions() 94 95 option.add_argument("--start-maximized") 96 97 # 如报错 chrome-extensions 98 # option.add_argument("--disable-extensions") 99 100 option.add_extension(proxy_auth_plugin_path) 101 102 # 关闭webdriver的一些标志 103 # option.add_experimental_option('excludeSwitches', ['enable-automation']) 104 105 driver = webdriver.Chrome( 106 chrome_options=option, 107 executable_path="./chromdriver" 108 ) 109 110 # 修改webdriver get属性 111 # script = ''' 112 # Object.defineProperty(navigator, 'webdriver', { 113 # get: () => undefined 114 # }) 115 # ''' 116 # driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": script}) 117 118 119 driver.get("https://httpbin.org/ip") 120这里需要注意的是,我们在使用浏览器时要注意版本是否一致,可以查看具体的帮助说明,如果不一致,即使程序能够运行,也会出现爬虫代理认证信息失败,需要弹窗要求手动输入认证信息的问题。
点赞
收藏

评论区

加载中...

相关推荐

别去送死了。Selenium 与 Puppeteer 能被网站探测的几十个特征

摄影:产品经理味道很好的毛血旺很多人喜欢使用Selenium或者Puppeteer(Pyppeteer)通过模拟浏览器来编写爬虫,自以为这样可以不被网站检测到,想爬什么数据就爬什么数据。但实际上,Selenium启动的浏览器,有几十个特征可以被网站通过JavaScript探测到。Puppeteer启动的浏览器,也有很多特征能够被网站探测。

一个HTTP请求的前世今生

网络请求现在充斥这我们生活中的各个地方,不论是在浏览器里面搜索你想要的信息,还是用手机跟朋友的聊微信,亦或者使用智能电视观看电视节目,网络请求无时无刻不在为你服务,那么你知道一个网络请求的完整链路吗?当从你在浏览器里面输入一个地址,它会经过那些环节才会到你看到的样子?比如,我们在浏览器里面输:浏览器会显示如下信息"count":"1","infoc

JSP中的Cookie和Session

1\.cookie1.1什么是cookie      浏览器访问服务器时,服务器会将一些数据(少量的,4KB左右)以setcookie消息头的方式发送给浏览器。浏览器会将这些数据保存下来(内存、或者以文件的形式保存在硬盘上)。当浏览器再次访问服务器时,会将这些数据以cookie消息头的方式发送过来。

Selenium3自动化测试【13】FireFox与Chrome浏览器元素定位

目前大部分浏览器都内置了相关插件或组件,能够帮助我们快速、简洁地展示各类元素的属性定义、DOM结构、CSS样式等属性。本书中使用的浏览器主要是FireFox、Chrome(这2款浏览器也是作为开发者常用的浏览器),因此本节介于这2款浏览器一起看看这些工具(组件)的使用方法。火狐(FireFox)浏览器如果大家对火狐浏览器较为熟知,在旧版本上的

Selenium使用代理出现弹窗验证如何处理

部分商业网站对爬虫程序限制较多,在数据采集的过程中对爬虫请求进行了多种验证,导致爬虫程序需要深入分析目标网站的反爬策略,定期更新和维护爬虫程序,增加了研发的时间和投入成本。这种情况下,使用无头浏览器例如Selenium,模拟用户的请求进行数据采集是更加方便快捷的方式。同时为了避免目标网站出现IP限制,配合爬虫代理,实现每次请求自动切换IP,能够保证长期稳定

EasyGBS视频平台设备正常情况下为什么无法播放ws

近几年,国家公安机关一直在强推国标GB28181协议,也有很多厂家积极响应号召,因此很多项目团队也想依托于国标GB28181协议来进行视频平台的搭建。EasyGBS是能够接入国标GB28181协议摄像头的视频平台,能够实现web浏览器、手机浏览器、微信、PC客户端等各种终端无插件播放。!GBS产品架构3平面定.png(http://121.40.