python selenium 保存网页缓存,保持登录
一、使用selenium、helium 登录网页,保存缓存,下次登录直接使用缓存,代码如下
from selenium import webdriver from helium import * import base64 import time import ddddocr import pickle def open_chrome(): options = webdriver.ChromeOptions() # 以最高权限运行 options.add_argument('--no-sandbox') # options.add_argument('--proxy-server=socks5://127.0.0.1:1080') # 禁用浏览器提示正在受自动化软件控制 options.add_experimental_option('useAutomationExtension', False) # 防止反爬 options.add_experimental_option('excludeSwitches', ['enable-automation']) # 指定用户文件夹User Data路径,可以把书签这样的用户数据保存在系统分区以外的分区 options.add_argument('--user-data-dir=E:\\code\\tw\\tt\\cache') # 指定缓存Cache路径 options.add_argument('--disk-cache-dir=E:\\code\\tw\\tt\\cache') # 谷歌文档提到需要加上这个属性来规避bug options.add_argument('--disable-gpu') # 禁用浏览器弹窗 prefs = { 'profile.default_content_setting_values': { 'notifications': 2 } } options.add_experimental_option('prefs', prefs) driver = webdriver.Chrome(chrome_options=options) driver.maximize_window() set_driver(driver) go_to("http://127.0.0.1:8000/#/login") write("admin","账号") write("admin","密码") code_base64 = driver.find_element_by_css_selector("#code + img").get_attribute('src').split("data:image/png;base64,")[-1] img = base64.b64decode(code_base64) # 识别验证码 ocr = ddddocr.DdddOcr(show_ad=False) code = ocr.classification(img) # code = res['pic_str'] write(code, '验证码') # time.sleep() click(Button('登 录')) driver.get_screenshot_as_file("test.png") time.sleep(5) kill_browser()
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5056863357775693"
crossorigin="anonymous"></script>
二、selenium 配置参数
每次当selenium启动chrome浏览器的时候,chrome浏览器很干净,没有插件、没有收藏、没有历史记录,这是因为selenium在启动chrome时为了保证最快的运行效率,启动了一个裸浏览器,这就是为什么需要配置参数的原因,但是有些时候我们需要的不仅是一个裸浏览器
selenium启动配置参数接收是ChromeOptions类,创建方式如下 :
1 2 3 | from selenium import webdriver option = webdriver.ChromeOptions() driver = webdriver.Chrome(chrome_options = option) |
创建了ChromeOptions类之后就是添加参数,添加参数有几个特定的方法,分别对应添加不同类型的配置项目
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from selenium import webdriver option = webdriver.ChromeOptions() # 添加启动参数 option.add_argument() # 添加扩展应用 option.add_extension() option.add_encoded_extension() # 添加实验性质的设置参数 option.add_experimental_option() # 设置调试器地址 option.debugger_address() |
常用配置参数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | from selenium import webdriver option = webdriver.ChromeOptions() # 添加UA options.add_argument( 'user-agent="MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"' ) # 指定浏览器分辨率 options.add_argument( 'window-size=1920x3000' ) # 谷歌文档提到需要加上这个属性来规避bug chrome_options.add_argument( '--disable-gpu' ) # 隐藏滚动条, 应对一些特殊页面 options.add_argument( '--hide-scrollbars' ) # 不加载图片, 提升速度 options.add_argument( 'blink-settings=imagesEnabled=false' ) # 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败 options.add_argument( '--headless' ) # 以最高权限运行 options.add_argument( '--no-sandbox' ) # 手动指定使用的浏览器位置 options.binary_location = r "C:Program Files (x86)GoogleChromeApplicationchrome.exe" #添加crx插件 option.add_extension( 'd:crxAdBlock_v2.17.crx' ) # 禁用JavaScript option.add_argument( "--disable-javascript" ) # 设置开发者模式启动,该模式下webdriver属性为正常值 options.add_experimental_option( 'excludeSwitches' , [ 'enable-automation' ]) # 禁用浏览器弹窗 prefs = { 'profile.default_content_setting_values' : { 'notifications' : 2 } } options.add_experimental_option( 'prefs' ,prefs) # 添加代理 ip options.add_argument( "--proxy-server=http://XXXXX.com:80" ) driver = webdriver.Chrome(chrome_options = chrome_options) |
其他配置项目参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | - - user - data - dir = [PATH] # 指定用户文件夹User Data路径,可以把书签这样的用户数据保存在系统分区以外的分区 –disk - cache - dir = [PATH] # 指定缓存Cache路径 –disk - cache - size = # 指定Cache大小,单位Byte –first run # 重置到初始状态,第一次运行 –incognito # 隐身模式启动 –disable - javascript # 禁用Javascript - - omnibox - popup - count = "num" # 将地址栏弹出的提示菜单数量改为num个 - - user - agent = "xxxxxxxx" # 修改HTTP请求头部的Agent字符串,可以通过about:version页面查看修改效果 - - disable - plugins # 禁止加载所有插件,可以增加速度。可以通过about:plugins页面查看效果 - - disable - javascript # 禁用JavaScript,如果觉得速度慢在加上这个 - - disable - java # 禁用java - - start - maximized # 启动就最大化 - - no - sandbox # 取消沙盒模式 - - single - process # 单进程运行 - - process - per - tab # 每个标签使用单独进程 - - process - per - site # 每个站点使用单独进程 - - in - process - plugins # 插件不启用单独进程 - - disable - popup - blocking # 禁用弹出拦截 - - disable - plugins # 禁用插件 - - disable - images # 禁用图像 - - incognito # 启动进入隐身模式 - - enable - udd - profiles # 启用账户切换菜单 - - proxy - pac - url # 使用pac代理 [via 1/2] - - lang = zh - CN # 设置语言为简体中文 - - disk - cache - dir # 自定义缓存目录 - - disk - cache - size # 自定义缓存最大值(单位byte) - - media - cache - size # 自定义多媒体缓存最大值(单位byte) - - bookmark - menu # 在工具 栏增加一个书签按钮 - - enable - sync # 启用书签同步 |
参考:https://www.cnblogs.com/sn5200/p/15949796.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架