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

posted @   RoyFans  阅读(6425)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示