脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python selenium+cookie实现免密登陆的示例代码

Python selenium+cookie实现免密登陆的示例代码

2022-10-10 11:09饿霸飞鸟 Python

本文主要介绍了Python selenium+cookie实现免密登陆的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

今天爬取airbnb的租房数据时,遇到了登陆问题。自己动手解决了一下。

我们知道,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即可。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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)\Microsoft\Edge\Application\msedge.exe"  # 浏览器的位置
    driver = Edge(options=options, executable_path=r"D:\ERic\WORK\python\Spider\msedgedriver.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&current_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实现免密登陆:

?
1
2
3
4
5
6
7
8
9
10
11
12
baseurl = 'https://www.airbnb.cn/s/%E6%B7%B1%E5%9C%B3/homes?refinement_paths%5B%5D=%2Fhomes&current_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时,发现已经是登陆状态,大功告成辣。

Python selenium+cookie实现免密登陆的示例代码

 到此这篇关于Python selenium+cookie实现免密登陆的示例代码的文章就介绍到这了,更多相关selenium cookie免密登陆内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_37637818/article/details/123040085?

延伸 · 阅读

精彩推荐
  • PythonPython 居然可以在 Excel 中画画你知道吗

    Python 居然可以在 Excel 中画画你知道吗

    哈喽,哈喽~对于Excel大家想到的是不是各种图表制作,今天我们来个不一样的。十字绣大家都知道吧,今天咱们来玩个电子版的十字绣...

    迢迢x5362022-09-28
  • Pythonpython 机器学习之支持向量机非线性回归SVR模型

    python 机器学习之支持向量机非线性回归SVR模型

    这篇文章主要介绍了python 机器学习之支持向量机非线性回归SVR模型,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,...

    吴裕雄11232021-07-22
  • Pythonpytorch下大型数据集(大型图片)的导入方式

    pytorch下大型数据集(大型图片)的导入方式

    今天小编就为大家分享一篇pytorch下大型数据集(大型图片)的导入方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 ...

    牙疼_LG4982020-05-03
  • Pythonpython判断设备是否联网的方法

    python判断设备是否联网的方法

    这篇文章主要为大家详细介绍了python判断设备是否联网的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    woodcol15902021-03-11
  • Pythonparamiko使用tail实时获取服务器的日志输出详解

    paramiko使用tail实时获取服务器的日志输出详解

    这篇文章主要给大家介绍了关于paramiko使用tail实时获取服务器的日志输出的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定...

    朝九晚五该多好6862021-08-10
  • Pythonpython操作xlsx格式文件并读取

    python操作xlsx格式文件并读取

    python操作xlsx格式文件是比较常见的一个问题,本文给大家介绍xlrd库读取,pandas库读取的实例代码,给大家讲解的很详细,需要的朋友跟随小编一起看看吧...

    不想秃头的晨晨12802021-11-19
  • Pythonpython基本语法练习实例

    python基本语法练习实例

    下面小编就为大家带来一篇python基本语法练习实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Wadirum4692020-12-08
  • Pythonpython使用hdfs3模块对hdfs进行操作详解

    python使用hdfs3模块对hdfs进行操作详解

    这篇文章主要介绍了python使用hdfs3模块对hdfs进行操作详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 ...

    蜗牛!Destiny13342020-06-06