前面爬虫系列我在介绍中谈到过Javascript进行渲染的界面,普通的请求是无法获取关键代码块的。

selenium确实是个神器,但是越来越多的网站也对selenium进行了识别和通过登录方式进行了限制,在登录方面因selenium携带cookies的方式和用requests库请求所携带的方式有很大的不同,之前走过了不少的坑,所以在此作下登录的总结。以大麦网淘宝网为例。

1、大麦网

大麦网是一个用于演唱会购票的网站,如果想利用selenium进行抢票操作就必须进行登录。

我的思路是写两个脚本:1. selenium驱动在登录界面的时候进行手动微信扫码登录,然后获取cookies保存在本地。2. 利用selenium加载界面(此时是未登录状态),然后往浏览器从本地里添加cookies,刷新,登录成功!

1.1 脚本一 获取cookies并保存本地

from selenium import webdriver
import os
import time
import jsondef browser_initial():""""进行浏览器初始化"""os.chdir('E:\\pythonwork')browser = webdriver.Chrome()log_url = 'https://passport.damai.cn/login?ru=https%3A%2F%2Fwww.damai.cn%2F'return log_url,browserdef get_cookies(log_url,browser):"""获取cookies保存至本地"""browser.get(log_url)time.sleep(15)     # 进行扫码dictCookies = browser.get_cookies()    # 获取list的cookiesjsonCookies = json.dumps(dictCookies) #  转换成字符串保存with open('damai_cookies.txt', 'w') as f:f.write(jsonCookies)print('cookies保存成功!')if __name__ == "__main__":tur = browser_initial()get_cookies(tur[0], tur[1])

图1

代码运行时会出现二维码,扫码后登录成功,程序自动保存cookies至本地。

图2

1.2 脚本二  加载本地的cookies访问网页

from selenium import webdriver
import os
import jsondef browser_initial():""""浏览器初始化,并打开大麦网购票界面(未登录状态)"""os.chdir('E:\\pythonwork')browser = webdriver.Chrome()browser.get('https://detail.damai.cn/item.htm?spm=a2oeg.search_category.0.0.8778f91as7xLdc&id=610870234751&clicktitle=2020%E5%BC%A0%E6%9D%B0%E3%80%8C%E6%9C%AA%C2%B7LIVE%E3%80%8D%E5%B7%A1%E5%9B%9E%E6%BC%94%E5%94%B1%E4%BC%9A%20%E5%90%88%E8%82%A5%E7%AB%99')return browserdef log_damai(browser):"""从本地读取cookies并刷新页面,成为已登录状态"""with open('damai_cookies.txt', 'r', encoding='utf8') as f:listCookies = json.loads(f.read())# 往browser里添加cookiesfor cookie in listCookies:cookie_dict = {'domain': '.damai.cn','name': cookie.get('name'),'value': cookie.get('value'),"expires": '','path': '/','httpOnly': False,'HostOnly': False,'Secure': False}browser.add_cookie(cookie_dict)browser.refresh()                      # 刷新网页,cookies才成功if __name__ == "__main__":browser = browser_initial()log_damai(browser)

结果如下图,出现的界面显示未登录,稍等几秒浏览器读取cookies后显示登录状态。

图3 未登录

图4 已登录

以上代码最难的部分就是往浏览器里面添加cookies的地方,我们怎么知道要改哪些参数并设置呢?原来获取下来的cookies是以列表的形式储存的,而列表里的元素是字典,每一个字典都是一个cookies,所以我们需要遍历列表,以字典形式往浏览器添加。我遍历了一遍本地保存的cookies,如下图。

图5 cookies内容

所以我们只需按照上表里的字段方式往浏览器里修改并添加就好啦。

2、淘宝网

淘宝网是大家爬的比较多的,但是使用过requests库请求爬的人都知道,先不说Ajax的加密,就连进行登录界面与验证码都难住了好多人。今天我试着利用selenium携带cookies方式登录成功了,操作与上面的大麦大体相似。

淘宝网的厉害之处在于能在使用账号密码方式登录时识别出你的selenium,然后拒绝你登陆。不过我尝试使用了二维码方式登录然后保存cookies再进行免登陆,成功了!

2.1 脚本一 获取cookies并保存本地

from selenium import webdriver
import os
import time
import jsondef browser_initial():""""进行浏览器初始化"""os.chdir('E:\\pythonwork')browser = webdriver.Chrome()log_url = 'https://www.taobao.com/'return log_url,browserdef get_cookies(log_url,browser):"""获取cookies保存至本地"""browser.get(log_url)time.sleep(20)     # 进行扫码dictCookies = browser.get_cookies()jsonCookies = json.dumps(dictCookies) #  转换成字符串保存with open('taobao_cookies.txt', 'w') as f:f.write(jsonCookies)print('cookies保存成功!')if __name__ == "__main__":tur = browser_initial()get_cookies(tur[0], tur[1])

因为打开淘宝任何网页都先是登录页面,只有登录了才能访问内容,所以log_url设置淘宝的任何网页都是可以的。

2.2 脚本二  读取cookies登录目标网站

from selenium import webdriver
import os
import json
import timedef browser_initial():""""进行浏览器初始化"""os.chdir('E:\\pythonwork')browser = webdriver.Chrome()goal_url = 'https://s.taobao.com/search?q=%E5%8D%AB%E8%A1%A3&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306'# 未携带cookies打开网页browser.get('https://www.taobao.com/')return goal_url,browserdef log_taobao(goal_url,browser):"""从本地读取cookies并登录目标网页"""# 从本地读取cookieswith open('taobao_cookies.txt', 'r', encoding='utf8') as f:listCookies = json.loads(f.read())for cookie in listCookies:cookie_dict = {'domain': '.taobao.com','name': cookie.get('name'),'value': cookie.get('value'),'path': '/',"expires": '','sameSite': 'None','secure': cookie.get('secure')}browser.add_cookie(cookie_dict)# 更新cookies后进入目标网页browser.get(goal_url)if __name__ == '__main__':tur = browser_initial()log_taobao(tur[0],tur[1])

淘宝网的代码跟大麦的大致相同,唯一不同的就是大麦网在登录页面刷新操作后就显示已登录状态了,而淘宝网刷新没用,必须新打开网页才行。所以淘宝网必须先打开一次用于登录,然后再打开目标网页。

图6  登录成功

如图,登录成功。不要觉得这简单,以为直接进入目标网址就完事了,如果不进行登录操作,你打开图6页面时将会跳转图7页面并且你的selenium已经被检测到!无法进行账号密码登录。

利用selenium携带cookies实现免登录相关推荐

  1. PHP—利用cookie实现七天免登录

    在大部分系统,都会存在用户的注册登录退出.当这个系统每天都要登录,但是每次都要输出用户名密码的话,就会觉得很麻烦(在不考虑安全隐患的情况下),这是就可以设计一个免登录的方法,来有效地解决这一问题. 解 ...

  2. selenium操作cookies实现免密登录,自动发微博

    一直想用selenium实现个小功能,比如发微博之类的,但是有的网站在登录会有验证码,没想到太好的方法解决,于是想到利用cookies来登录网站 第一步:获取一个可用的cookies,获取的cooki ...

  3. Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型

    1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...

  4. php selenium模拟登陆,python+selenium自动化实战携带cookies模拟登陆微博

    首先获取cookies,使用手机扫码登录斗鱼,然后利用网页cookies保存在本地 有些同学可能会问,这不是相当于自己登录了吗,还模拟什么呢,其实来说这是一次获取cookies可以使用很久 #!/us ...

  5. python selenium 使用cookies免登陆,与requests使用cookies免登陆的差别

    原址:https://blog.csdn.net/qq_38282706/article/details/80639803 要点:1.selenium的cookies是多个字典组成的list,而且有很 ...

  6. selenium 自动化 携带cookies模拟登陆哔哩哔哩并发送弹幕和评论(解决多窗口切换、规避检测、评论无法输入等问题)

    获取cookies之后就可以自动登陆到哔哩哔哩,点击搜索到的视频,然后输入弹幕,发送弹幕,再点击评论,发送评论,这里有个问题就是运行几次之后发现评论直接sed_keys的话,会出现输入不进去的情况,然 ...

  7. 利用Selenium 登录京东,抢购19.9的荣耀手环3

    一.首先,19.9元抢购是京东吸引顾客的,最后反正强盗也是上百块,坑爹 二.利用Selenium做抢购的话能看到物品,用post请求就需要解析页面,获取参数信息,再模拟登录,但是自己就不能实时了解物品 ...

  8. 【网站密码管理不用愁】基础篇 • 利用selenium构建网站密码管理和自动登录神器

    文章目录 一.项目背景 二.前置必懂知识 [01]selenium基础知识 [02]了解HTML和CSS 三.用Python和selenium实现 [01]实现访问网站 [02]定位目标元素 四.Pa ...

  9. 利用selenium模拟自动登录链家、贝壳、安居客等网站(超级实用,推荐收藏!)

    大家好, 今天跟大家分享一个利用selenium模拟自动登录王连某家.an聚客等网站. 文章内容超级实用,尽快在小本本上记录下来哟. 特别说明,以下代码仅用于交流学习,不做其他商业用途,切记切记! 上 ...

最新文章

  1. 阿里官方Redis开发规范!
  2. 腾讯Elasticsearch海量规模背后的内核优化剖析
  3. 神经网络与机器学习 笔记—改善反向传播的性能试探法
  4. devcon的测试 尝试使用devcon命令重置Intel Realsense D435摄像头 USB
  5. python如何进行双色球预测最准确_【原创】python基于大数据现实双色球预测
  6. QT的QOpenGLTextureBlitter类的使用
  7. 说唱计算机网红,首档喊麦节目太奇葩,蹭了说唱热度,还请了被封杀网红当导师...
  8. 呼叫中心客服交流三大法宝
  9. 4、IO--字节转换流
  10. FLEX4 在组件中自定义ToolTip样式
  11. Lesson5 一阶自治微分方程
  12. 如何安装 chrome 开发版
  13. SQL语法很难?其实只需要记住这部分行了
  14. 工程数学线性代数第六版答案与解析,《线性代数附册学习辅导与习题全解》
  15. __android_log_print 打印中文乱码,打印日志中文乱码 (Print log Chinese garbled)
  16. word2016排版脚注问题
  17. 简体中文转换为繁体中文
  18. layui使用表格数据,json嵌套数据解决
  19. 用 Pinbox 轻松收藏代码,这就是我要的收藏工具
  20. C语言 sigaction函数捕捉信号 注册回调函数

热门文章

  1. 全国计算机四级——操作系统原理笔记
  2. 阿里云国际版如何将ECS云服务器中的数据备份到本地
  3. python怎么弄成白色背景_python – 在matplotlib中为colorbar添加白色背景
  4. 《Word2vec》1 模型的引入介绍与相关概念
  5. 使用python动手爬取智联招聘信息并简单分析
  6. 上一页 1 2 3 ... 10 下一页 固定分页
  7. 五款优质资源网站 每一个都让你欲罢不能
  8. 杂项多彩_40美丽多彩的博客设计
  9. 此图形驱动程序无法找到兼容的图形…
  10. windows核心编程--2、windows的画笔画刷以及一些简单的应用