怎么实现免登录?
有两种通过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过来。
更多相关技术文章,请访问PHP中文网!