Heim  >  Artikel  >  Backend-Entwicklung  >  实现免登录的方法有几种

实现免登录的方法有几种

PHPz
PHPzOriginal
2016-06-06 20:41:5910316Durchsuche

实现免登录的方法有几种

怎么实现免登录?

有两种通过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怎么来的呢?

 企业微信截图_15924437828073.png

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

更多相关技术文章,请访问PHP中文网

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn