刷新评论 刷新页面 返回顶部
,'

大型情感剧集Selenium:6_selenium中的免密登陆与cookie操作【华为云技术分享】

网站登录

现在各大平台在反爬虫功能上,可谓花样繁多。总结下来按照破解成功率排名,最高的是滑动解锁、其次是验证码数字、之后是一次点击对应的汉字,最后是想12306之前那种反人类的让你说那些是奶糖吧,哈哈…

为什么我这么排序?很多人可能不赞同,认为验证码数字是最简单的…其实不然,因为验证码数字现在不仅是背景的色块,还穿插这很多混乱的线条,别说是系统识别,就是人仔细看都还会经常出错,所以成功率实在不高。至于滑动解锁,网上教程很多…剩下的两种就难度更高了…

那么如何能跳过这些步骤?在访问前添加cookie,是最简单粗暴的办法!

如何获取cookie

当我们成功登陆网址后,网站会将登陆验证信息保存在浏览器的Headers中,我们通过F12即可获取,但直接从headers中看是long long 的字符串不方便审查,所以切换到cookie栏,如下图:

在cookie中不仅有登陆凭证,还会有很多其他网站附带的属性。此时需要我们过滤掉无关的数据,仅保存我们需要的内容即可。

你问我怎么甄别?如简书这样的,什么local、read_mode、default_font肯定是打酱油的属性,没必要关注。

但上面的__yadk_uid等等的是否需要那就只能靠实验了…先只加token,不行再尝试添加其他的呗。

selenium与cookie有关的方法

selenium中与cookie相关的方法有以下内容:

  • .delete_all_cookies()
  • .get_cookies()/ .get_cookie()
  • .add_cookie()

基本使用场景如下:

当,为了清空或者二次刷新登陆的时候,使用delete_all_cookies删除浏览器所有的cookie数据。

当当,为了获取系统某个或者所有cookie信息是使用get_cookies()/ .get_cookie()。

当当当,我们需要为浏览器添加cookie时,使用add_cookie。这种场景最多…

说的再多,不如来点实际的,设计一套思路来实现这三种方法:

  • 首先,我们访问简书
  • 然后点击登陆,输入用户名密码
  • 等待十秒用来手动完成验证方式
  • 获取get_cookie(key) 和get_cookies()
  • 退出chromedriver
  • 重新访问简书,并添加cookie
  • 再次访问url,看到已经完成了登陆…
 1 # -*- coding: utf-8 -*-
 2 # @Author   : 王翔
 3 # @JianShu  : 清风Python
 4 # @Date     : 2019/7/2 0:55
 5 # @Software : PyCharm
 6 # @version  :Python 3.7.3
 7 # @File     : selenium_cookie.py
 8 
 9 from selenium import webdriver
10 import time
11 
12 driver = webdriver.Chrome()
13 driver.get("http://www.jianshu.com/u/d23fd5012bed")
14 driver.delete_all_cookies()
15 driver.find_element_by_id('sign_in').click()
16 driver.find_element_by_id('session_email_or_mobile_number').send_keys('username')
17 driver.find_element_by_id('session_password').send_keys('password')
18 driver.find_element_by_id('sign-in-form-submit-btn').click()
19 # 此时我们手动进行登录验证操作操作
20 time.sleep(10)
21 
22 # cookie 关键字
23 key = 'remember_user_token'
24 user_token = driver.get_cookie(key)
25 print(user_token)
26 cookies = driver.get_cookies()
27 print(cookies)
28 driver.quit()
29 
30 cookie = {'name': key, 'value': user_token['value']}
31 driver = webdriver.Chrome()
32 driver.get("http://www.jianshu.com/u/d23fd5012bed")
33 driver.add_cookie(cookie)
34 driver.get("http://www.jianshu.com/u/d23fd5012bed")
35 time.sleep(3)
36 driver.close()

看看实现效果,为了不暴露用户名密码,所以代码中清空了用户名,暂停手动输入的。
看到终端打印了cookie和cookies,cookie为字典,cookies为包裹了多个字典的列表。之后我们使用cookie进行二次登陆时,通过刷新两次界面看到右上角用户名由未登录变为了登陆:


To Be Continue?

今天的selenium内容就更新到这里,为什么是问号,因为笃定了明天这篇文章浏览量又是几十…不写吧这个系列成了太_监文,写吧完全是给个别人更新的,哎…
OK,如果觉得这篇文章对你有帮助,欢迎将文章或我的微信公众号【清风Python】转发分享给更多喜欢python的朋友们,谢谢。
作者:

HDC.Cloud 华为开发者大会2020 即将于2020年2月11日-12日在深圳举办,是一线开发者学习实践鲲鹏通用计算、昇腾AI计算、数据库、区块链、云原生、5G等ICT开放能力的最佳舞台。

posted @ 2019-12-10 18:05  华为云官方博客  阅读( ...)  评论( ...)    收藏
], ['\\(','\\)']], processClass: 'math', processEscapes: true }, TeX: { equationNumbers: { autoNumber: ['AMS'], useLabelIds: true }, extensions: ['extpfeil.js', 'mediawiki-texvc.js'], Macros: {bm: "\\boldsymbol"} }, 'HTML-CSS': { linebreaks: { automatic: true } }, SVG: { linebreaks: { automatic: true } } });

大型情感剧集Selenium:6_selenium中的免密登陆与cookie操作【华为云技术分享】

网站登录

现在各大平台在反爬虫功能上,可谓花样繁多。总结下来按照破解成功率排名,最高的是滑动解锁、其次是验证码数字、之后是一次点击对应的汉字,最后是想12306之前那种反人类的让你说那些是奶糖吧,哈哈…

为什么我这么排序?很多人可能不赞同,认为验证码数字是最简单的…其实不然,因为验证码数字现在不仅是背景的色块,还穿插这很多混乱的线条,别说是系统识别,就是人仔细看都还会经常出错,所以成功率实在不高。至于滑动解锁,网上教程很多…剩下的两种就难度更高了…

那么如何能跳过这些步骤?在访问前添加cookie,是最简单粗暴的办法!

如何获取cookie

当我们成功登陆网址后,网站会将登陆验证信息保存在浏览器的Headers中,我们通过F12即可获取,但直接从headers中看是long long 的字符串不方便审查,所以切换到cookie栏,如下图:

在cookie中不仅有登陆凭证,还会有很多其他网站附带的属性。此时需要我们过滤掉无关的数据,仅保存我们需要的内容即可。

你问我怎么甄别?如简书这样的,什么local、read_mode、default_font肯定是打酱油的属性,没必要关注。

但上面的__yadk_uid等等的是否需要那就只能靠实验了…先只加token,不行再尝试添加其他的呗。

selenium与cookie有关的方法

selenium中与cookie相关的方法有以下内容:

  • .delete_all_cookies()
  • .get_cookies()/ .get_cookie()
  • .add_cookie()

基本使用场景如下:

当,为了清空或者二次刷新登陆的时候,使用delete_all_cookies删除浏览器所有的cookie数据。

当当,为了获取系统某个或者所有cookie信息是使用get_cookies()/ .get_cookie()。

当当当,我们需要为浏览器添加cookie时,使用add_cookie。这种场景最多…

说的再多,不如来点实际的,设计一套思路来实现这三种方法:

  • 首先,我们访问简书
  • 然后点击登陆,输入用户名密码
  • 等待十秒用来手动完成验证方式
  • 获取get_cookie(key) 和get_cookies()
  • 退出chromedriver
  • 重新访问简书,并添加cookie
  • 再次访问url,看到已经完成了登陆…
 1 # -*- coding: utf-8 -*-
 2 # @Author   : 王翔
 3 # @JianShu  : 清风Python
 4 # @Date     : 2019/7/2 0:55
 5 # @Software : PyCharm
 6 # @version  :Python 3.7.3
 7 # @File     : selenium_cookie.py
 8 
 9 from selenium import webdriver
10 import time
11 
12 driver = webdriver.Chrome()
13 driver.get("http://www.jianshu.com/u/d23fd5012bed")
14 driver.delete_all_cookies()
15 driver.find_element_by_id('sign_in').click()
16 driver.find_element_by_id('session_email_or_mobile_number').send_keys('username')
17 driver.find_element_by_id('session_password').send_keys('password')
18 driver.find_element_by_id('sign-in-form-submit-btn').click()
19 # 此时我们手动进行登录验证操作操作
20 time.sleep(10)
21 
22 # cookie 关键字
23 key = 'remember_user_token'
24 user_token = driver.get_cookie(key)
25 print(user_token)
26 cookies = driver.get_cookies()
27 print(cookies)
28 driver.quit()
29 
30 cookie = {'name': key, 'value': user_token['value']}
31 driver = webdriver.Chrome()
32 driver.get("http://www.jianshu.com/u/d23fd5012bed")
33 driver.add_cookie(cookie)
34 driver.get("http://www.jianshu.com/u/d23fd5012bed")
35 time.sleep(3)
36 driver.close()

看看实现效果,为了不暴露用户名密码,所以代码中清空了用户名,暂停手动输入的。
看到终端打印了cookie和cookies,cookie为字典,cookies为包裹了多个字典的列表。之后我们使用cookie进行二次登陆时,通过刷新两次界面看到右上角用户名由未登录变为了登陆:


To Be Continue?

今天的selenium内容就更新到这里,为什么是问号,因为笃定了明天这篇文章浏览量又是几十…不写吧这个系列成了太_监文,写吧完全是给个别人更新的,哎…
OK,如果觉得这篇文章对你有帮助,欢迎将文章或我的微信公众号【清风Python】转发分享给更多喜欢python的朋友们,谢谢。
作者:

HDC.Cloud 华为开发者大会2020 即将于2020年2月11日-12日在深圳举办,是一线开发者学习实践鲲鹏通用计算、昇腾AI计算、数据库、区块链、云原生、5G等ICT开放能力的最佳舞台。

posted @ 2019-12-10 18:05  华为云官方博客  阅读( ...)  评论( ...)    收藏