最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Python selenium+cookie实现免密登陆代码示例
时间:2022-06-25 01:23:03 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下Python selenium+cookie实现免密登陆代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
我们知道,http是无状态的,那么网页如何实现用户登陆注册功能呢?Session和Cookie就是为了满足这种需求出现的技术。
首先介绍一下Session和Cookie的概念。
在Web中Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。
Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。
当用户第一次访问某个网页时,服务器会创建一个Session对象,用于存储与该用户会话的属性以及配置信息,并且返回一个带有set-cookie字段的响应头给客户端,客户端浏览器会把cookie保存到本地,下一次访问该网页时,会加上cookie。服务器通过cookie辨认是否有用户的Session。这样就实现了用户的登陆注册功能,但是Session和Cookie的应用远不及此,这里不再赘述。
那么为了实现免密登陆,我们需要做如下几件事情:
获取登陆airbnb时客户端浏览器存储的cookies。
把cookies写入本地。
下次用selenium登陆airbnb时,把cookies带上。
获取cookies:
使用selenium的get_cookies()函数来获取cookies。
但是如何实现登陆呢?总得要先登陆了,才能有cookies吧?可以在代码中加一段休眠时间,在休眠时间我们手动完成登陆,休眠过后,再让代码记录cookies即可。
import time from msedge.selenium_tools import Edge, EdgeOptions import chardet # 返回一个driver对象 def activate_selenium_driver(): options = EdgeOptions() # options.use_chromium = True options.add_experimental_option('excludeSwitches', ['enable-automation']) options.binary_location = r"C:Program Files (x86)MicrosoftEdgeApplicationmsedge.exe" # 浏览器的位置 driver = Edge(options=options, executable_path=r"D:ERicWORKpythonSpidermsedgedriver.exe") # 相应的浏览器的驱动位置 return driver def check_charset(file_path): with open(file_path, "rb") as f: data = f.read(4) charset = chardet.detect(data)['encoding'] return charset baseurl = 'https://www.airbnb.cn/s/%E6%B7%B1%E5%9C%B3/homes?refinement_paths%5B%5D=%2Fhomes¤t_tab_id=home_tab&selected_tab_id=home_tab&screen_size=large&hide_dates_and_guests_filters=false&place_id=ChIJkVLh0Aj0AzQRyYCStw1V7v0&map_toggle=false' driver = activate_selenium_driver() driver.get(baseurl) # 20秒的休眠时间以手动完成登陆 for i in range(0, 20): print(20 - i) time.sleep(1) # 获取cookies cookies = driver.get_cookies() # 保存到本地 with open('cookies.txt', 'w', encoding=check_charset('cookies.txt')) as f: for i in cookies: f.write(str(i)) f.write('n')
携带cookies实现免密登陆:
baseurl = 'https://www.airbnb.cn/s/%E6%B7%B1%E5%9C%B3/homes?refinement_paths%5B%5D=%2Fhomes¤t_tab_id=home_tab&selected_tab_id=home_tab&screen_size=large&hide_dates_and_guests_filters=false&place_id=ChIJkVLh0Aj0AzQRyYCStw1V7v0&map_toggle=false' driver.get(baseurl) cookies = [] with open('cookies.txt', 'r', encoding=funcs.funcs.check_charset('cookies.txt')) as f: for i in f: cookies.append(eval(i.strip())) for i in cookies: driver.add_cookie(i) time.sleep(3) driver.refresh()
再次打开Airbnb时,发现已经是登陆状态,大功告成辣。
相关文章
- 无期迷途主线前瞻直播总结 无期迷途主线前瞻直播内容介绍 11-22
- 以下哪种非遗技艺是用针在纸上绣画 蚂蚁新村11月21日答案 11-22
- 江南百景图听风塔怎么样 11-22
- 原神恰斯卡圣遗物怎么搭配 11-22
- 2024年霸王茶姬11月22日口令是什么 2024.11.22霸王茶姬口令介绍 11-22
- 光遇11.21季节蜡烛在哪里 光遇11月21日季节蜡烛位置攻略 11-22