通过cookie实现免登录的两种方法

有两种通过cookie实现免登录的方法,我将以登录B站并进入“动态”页面为例分别演示这两种方法。

方法1:通过配置Chrom的options来实现 

options.add_argument("--user-data-dir=C:/Users/Administrator/AppData/Local/Google/Chrome/User Data")

这种方法实际上是直接读取本地电脑上的用户数据(包含了cookie,插件及收藏夹等等),以实现免登录效果,

代码为:

options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox') #使用禁用沙箱命令解决chrome浏览器崩溃问题
options.add_argument("--user-data-dir=C:/Users/Administrator/AppData/Local/Google/Chrome/User Data") #用户数据目录
self.driver = webdriver.Chrome(options=options)
self.driver.get('https://t.bilibili.com/') #直接进入B站的“动态”页面
print(self.driver.get_cookies()) #可打印获取的cookies
self.driver.maximize_window()
time.sleep(3)

这样可以实现效果,但很容易导致谷歌浏览器奔溃,也会比较慢(不知道啥原因),但至少实现了不是。

方法2:通过add_cookie实现,这种运行速度很快,但关键是要把cookies先弄到手。

self.driver = webdriver.Chrome()
#下面这个不能省,就是必须先让浏览器打开一个网页,至于打开哪个网页不重要,不然会报错:unable to set cookie

self.driver.get('https://t.bilibili.com/')  

cookies = [{'domain': '.bilibili.com', 'expiry': 1577689702.126078, 'httpOnly': False, 'name': 'sid', 'path': '/', 'secure': False, 'value': 'hrbxcwgk'},{'domain': '.t.bilibili.com', 'httpOnly': False, 'name': 'Hm_lpvt_8a6e55dbd2870f0f5bc9194cddf32a02', 'path': '/', 'secure': False, 'value': '1546160927'}] 

for cookie in cookies:
    self.driver.add_cookie(cookie)  #循环添加cookie
self.driver.get('https://t.bilibili.com/')
self.driver.maximize_window()
time.sleep(3)

这样也实现了免登录,可是问题在于cookies怎么来的呢?

也可以通过第一种方法先登录并通过self.driver.get_cookies()将cookies打印出来,再copy过来。

猜你喜欢

转载自blog.csdn.net/qq_37969201/article/details/85397843
今日推荐