文档章节

selenium chrome80 invalid 'sameSite'问题解决

開援带碼
 開援带碼
发布于 02/20 18:27
字数 608
阅读 276
收藏 0

背景:

最近遇到的项目问题。原本程序可以正常运行。但是浏览器升级到chrome80后,添加cookies会出现如下错误。invalid 'sameSite'

    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: invalid 'sameSite'
  (Session info: chrome=80.0.3987.106)

这是一小段cookies样本

[
{
    "domain": ".www.x23qb.com",
    "hostOnly": false,
    "httpOnly": false,
    "name": "Hm_lpvt_ccca7d06c6125fc10ac7703d23c8a4ed",
    "path": "/",
    "sameSite": "unspecified",
    "secure": false,
    "session": true,
    "storeId": "0",
    "value": "1582182811",
    "id": 1
},
{
    "domain": ".www.x23qb.com",
    "expirationDate": 1613718810,
    "hostOnly": false,
    "httpOnly": false,
    "name": "Hm_lvt_ccca7d06c6125fc10ac7703d23c8a4ed",
    "path": "/",
    "sameSite": "unspecified",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "1582182065",
    "id": 2
}
]

虽然官方说了很多关于升级chrome80后samesite变化的内容。但试来试去都不行,感觉像烟雾弹。我先说直接解决方法吧。

解决方案(简单)【推荐】:

直接遍历pop掉sameSite参数即可。这样添加就不会报错。

完全方案(全方位):

# -*- coding:utf-8 -*-
import json
from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
experimentalFlags = [
    #【机器翻译官方说明】站点必须指定SameSite=None才能启用第三方使用。0默认1开启2关闭
    'same-site-by-default-cookies@2',
    #【机器翻译官方说明】如果设置了没有SameSite限制的cookie而没有Secure属性,则将拒绝该cookie。0默认1开启2关闭
    'cookies-without-same-site-must-be-secure@2',]
chromeLocalStatePrefs = { 'browser.enabled_labs_experiments' : experimentalFlags}
chrome_options.add_experimental_option('localState', chromeLocalStatePrefs)  
web = webdriver.Chrome(options=chrome_options)

#样例
web.get('http://www.baidu.com')
#样本
cookies_txt = """[{
    "domain": ".baidu.com",
    "expirationDate": 1605860802.696487,
    "hostOnly": false,
    "httpOnly": false,
    "name": "BAIDUID",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "732C9117EF0138A708296C63CD08C76D:FG=1",
    "id": 1
},
{
    "domain": ".baidu.com",
    "expirationDate": 1582277753.749732,
    "hostOnly": false,
    "httpOnly": false,
    "name": "BDORZ",
    "path": "/",
    "sameSite": "no_restriction",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "B490B5EBF6F3CD402E515D22BCDA1598",
    "id": 2
}]"""
cookies = json.loads(cookies_txt)
#关键点!其实简单只在这里处理即可。
for cook in cookies:
    #遍历删除sameSite,注意,旧版chrome可能是没有samesite
    try:
        cook.pop('sameSite')
    except:
        pass
    web.add_cookie(cook)
web.refresh()

后记:

网上说如果只是开发测试,浏览器可以降级搭配79以下的版本。但我不推荐这么做。

如果项目很急,使用简单方案吧~直接pop掉就好。这样可以快速解决问题的。

按照官方说明80、81、82版本是sameSite的测试使用过渡期。所以为了项目以后发展,建议在option中把这两个sameSite相关的限制关掉。毕竟默认值说不定以后会变呢?老老实实关掉限制,pop掉samesite是最好的选择,这样浏览器随你升级也不用改代码。

© 著作权归作者所有

開援带碼
粉丝 4
博文 32
码字总数 20593
作品 0
广州
私信 提问
加载中

评论(0)

[ASP.NET Core 3.1]浏览器嗅探解决部分浏览器丢失Cookie问题

[ASP.NET Core 3.1]浏览器嗅探解决部分浏览器丢失Cookie问题 看了前文的同学们应该都知道,搜狗、360等浏览器在单点登录中反复重定向,最终失败报错。 原因在于,非Chrome80+浏览器不识别Coo...

幸运券发放
03/30
0
0
预测最近面试会考 Cookie 的 SameSite 属性

前言 2 月份发布的 Chrome 80 版本中默认屏蔽了第三方的 Cookie,在灰度期间,就导致了阿里系的很多应用都产生了问题,为此还专门成立了小组,推动各 BU 进行改造,目前阿里系基本已经改造完...

冴羽
03/18
0
0
[ASP.NET Core 3.1]浏览器嗅探解决部分浏览器丢失Cookie问

{ // 表示ASP.NET Core 启动Cookie策略 } { } private void CheckSameSite(HttpContext httpContext, CookieOptions options){ } { }...

dotNET跨平台
前天
0
0
.NET Framework 发布 12 月安全性和质量汇总

.NET Framework 的 2019 年 12 月安全和质量汇总更新现已发布。 据悉,此版本包含以下质量和可靠性方面的改进: ASP.NET 现如今,当 HttpCookie.SameSite 值为 “ None” 时,ASP.NET 将发出...

白开水不加糖
2019/12/12
1.3K
0
IdentityServer4迁移至3.x版本注意问题详解

前言 之前有一位购买我课程的童鞋利用最新的IdentityServer4版本即对应.NET Core 3.x,发布到生产环境在学习,结果出了一些问题,此前我并未过多关注IdentityServer4升级到3.x版本,所以在此...

Jeffcky
03/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Python什么情况下会生成pyc文件?

作为Python爱好者,需要了解.py脚本的基本运行机制及特性: 在很多工作上Python的运行流程基本上取决于用户,因此源码不需要编译成二进制代码(否则无法实现大部分贴近用户的特性),而直接从...

Python圈子
6分钟前
7
0
Python正则表达式,这一篇就够了!

之前我们讲解了 正则表达式语法与引擎 的起源、发展、流派、语法、引擎、优化等相关知识,今天我们主要来学习一下 正则表达式在 Python语言 中的应用! 大多数编程语言的正则表达式设计都师从...

猪哥66
8分钟前
9
0
linux chattr命令的使用

chattr命令用来改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性 , 用chattr命令防止系统中某个关键文件被修改 添加属性i:不得任意更动文件或目录。 chattr +i /home/ww...

imzchloe
8分钟前
13
0
基于三维GIS技术的符号化表达系统的设计及实现

随着三维GIS技术的发展,人们在其可视化能力方面要求不断提高,在部分应用中,人们不仅要求将场景中物体位置准确描述表达出来,同时还需要保证其逼真性和美观性在智慧城市阶段,三维GIS的构建...

ZTMAP
12分钟前
5
0
技术分享 | 排序(filesort)详细解析(8000 字长文)

作者:高鹏(网名八怪) 文章末尾有他著作的《深入理解 MySQL 主从原理 32 讲》,深入透彻理解 MySQL 主从,GTID 相关技术知识。 本文来源:转载自公众号-老叶茶馆 *爱可生开源社区出品,原创...

爱可生
14分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部