ホームページ  >  記事  >  バックエンド開発  >  实现免登录的方法有几种

实现免登录的方法有几种

PHPz
PHPzオリジナル
2016-06-06 20:41:5910316ブラウズ

实现免登录的方法有几种

怎么实现免登录?

有两种通过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中文网

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。