干了一晚上,对于我这个新手来说太不友好了,要哭了,终于成功了,加油加油,冲冲冲,发布一下给自己留个纪念

我们先说一下思路,我们在使用selenium自动化的时候,其实和你本人打开网站区别是不大的,那么为什么你打开那个网站就可以登录上,因为你携带了cookie,cookie会保存你的登录信息,在你退出网页后再次点击仍然可以登录上,最重要的是,cookie在比较长一段时间类都是不会变化的,如果发生变化了,多半是你的cookie获取的不对。那么根据这点,我们只要拿到正确的cookie然后在我们给网页发送请求的时候携带上去就可以轻松实现登录。

然后我们着手开始准备代码,第一个我们要获取我们的cookie,这里我们需要安装一个插件,Cookie Editor,非常的好用,可以完美的获得cookie,但是因为是第三方的不知道安不安全,如果觉得不咋安全可以去设置里面找到cookie的管理,然后打开所有的cookie保存网页,这样麻烦很多这里就不介绍了,主要讲这个第三方插件

首先进入我们浏览器的扩展部分,edge浏览器的扩展网址:edge://extensions/

进入以后找到获取扩展的那个,然后搜索去获取,获取成功以后这里有一个提示的,可以大概看看

我设置的快捷键是CTRL加上Y,因为这个我不怎么使用,可以设置自己舒服的快捷键,也可以去浏览器右上角打开,也很好

我们登录一个网页以后,然后打开我们的插件,获取我们的cookie

获取完了以后开始思考我们的代码如何写,这里先提供一下我写的

# 实现模拟登录的一个第三方库,完美成功,非常的牛逼,selenium基本上可以解决所有的登录
from pymongo import MongoClient
import time
import requests
import sys'''
进行模拟登录,需要的参数是url,和cookies_str,一个可以复制,另一个在浏览器上面的插件可以获取,然后轻松登录,最后为了增强它的可移植性,我们增加了driver参数
cookies_str这个在浏览器上面ctr+y便可以复制了,然后变成我们的字符串参数
'''# 技术点1:给类传递参数
class Mndl(object):# 给这个类增加三个参数,记住奥# url和cookies的字符串,后面还需要还要加一个driver,不然可移植性比较差,登录作用不大def __init__(self, *var):try:self.url = var[0]except IndexError:print("错误!!!你没有输入url,cookies_str和driver,请输入它们!!!")# 关闭python所有进程,包括我们的selenium自动化这些sys.exit(0)try:self.cookies_str = var[1]except IndexError:print("错误!!!你没有输入cookies_str和driver,请输入它们!!!")sys.exit(0)try:self.driver = var[2]except IndexError:print("错误!!!你没有输入driver,请输入它!!!")sys.exit(0)# 主要运行的函数,会登录上去,然后面的话我们并不会关闭页面,会继续让你进行其他的操作,只是达到登录的效果def run(self):# 我们自己的报错手段,告诉你哪里有问题,不然你是找不出来的try:cookies_list = self.help_cookies()except Exception as e:print("请输入正确的cookies_str!!!你的都不可以转换,是不是搞错了")print("系统报错点,给你看看", e)sys.exit(0)try:requests.get(self.url)except Exception as e:print("错误!!!确保你输入的url可以被访问!!!")print("系统报错点,给你看看", e)sys.exit(0)try:self.driver.get(self.url)except Exception as e:print("错误!!!你的参数不是自动化的实例!!!请输入正确的driver!!!")print("系统报错点:", e)sys.exit(0)# 删除原有的所有参数,不然就会检测出来这是一个爬虫,因为有些参数多加了,也登录不上self.driver.delete_all_cookies()'''对于一些大厂来说,他们会想办法阻止你一次性提交所有的cookie,让你报错然后提交不了所有的cookie这些我们增加一个try,然后刷新,差不多就可以解决这个问题了'''# 技术点5,解决大厂报错不让你一次性提交cookie的问题for i in cookies_list:# 有些它的url是在不断变化的,也就是说,提交以后是需要刷新的,不然就会告诉你域名不匹配,所以要使用try,保证我们所有的cookie可以提交上去try:self.driver.add_cookie(i)except:# 刷新一下是和get那个url不一样的,刷新它会指定url,然后域名就会不同,靠这个防止自动化,所以我们需要刷新self.driver.refresh()time.sleep(0.5)self.driver.add_cookie(i)time.sleep(3)# 页面刷新self.driver.refresh()# 技术点2,本函数把导入的cookies_str变成一个完美的列表,里面内容都是字典,并且是python格式的# 他还会把这些数据写道我们的数据库里面去,方便我们观察def help_cookies(self):# 因为我们的str里面有一些python无法解析的字符,所以要这样变成一个完美的列表cookies_list = eval(self.cookies_str.replace("false", "False").replace("true", "True"))client = MongoClient("localhost", 27017)db = client["python"]# 这是一个关于cookies的集合,后面去Mongodb里面看看col = db["cookies"]# 删除所有数据先,不然加上之前的数据没法看col.delete_many({})# 写入数据,为什么要这么做呢,因为让它变得有可扩展性,写入以后就可以提取然后换个地方面登录,也不知道有没有用col.insert_many(cookies_list)for cookie in cookies_list:# 技术点3,因为我们的sameSite的值是python无法解析的,所以删掉或者替换变成其他的# 技术点4,我们提交mongodb以后它会增加一些东西,需要删掉del cookie['sameSite'], cookie["_id"]return cookies_list'''学习到的一些技术eval()的使用,之前老师讲过现在终于想起来了,很厉害的用法,没有它基本上就失败了向一个类传递参数,然后使用这些参数'''

虽然写得比较拉跨,还有点小骄傲,但是还是得讲讲我的一个思路。这个可以根据自己的使用环境进行修改的,因为要同时登录两个网站,而且都是url加上cookie的使用,url就是它的登录界面,cookie就是我们携带的登录参数,那么如果我可以对于每一个网站都只输入url加上cookie是不是就可以都实现登录了,非常的轻松,而且理论上是成立的,那么要达到这样的效果,于是我写了一个第三方辅助文件,只要把参数输入进去了,基本上就可以登录上了。

讲解一下我这个第三方文件,我们登录以后肯定是希望能去做一些事情的,而不是啥也干不了,为了增强它的作用性,我们增加一个参数而不是直接在第三方文件里面写代码,那就是driver,selenium的基本用法里面有的,然后我们在我们自己的文件上面创建一个浏览器的实例,然后命名输入,欸嘿,登录以后也可以进行操作了,就很舒服,然后为了增强代码的可扩展性,我打算把它写进mongodb里面去,后面有需要了别人也可以访问到这个cookies,也可以实现模拟登录,但是这样就要多写一些代码,比较麻烦,没有下载pymongo和学习mongodb的好兄弟就修改一下代码,具体就是去掉2,81-88行代码,还有92行代码里面的cookie["_id"],也是可以使用的

这些东西搞好了以后,在同等目录下新建一个文档,然后把url和cookie搞上去,我们就可以开始实现啦,这边是我的一个代码块,可以看看

# 第一次使用自己写的第三方库,模拟登录b站,QQ空间也尝试了一下,成功了
import time
# 导入我们的第三方库
from get_help import Mndl
from selenium import webdrivercookies_str = '''
[
{"domain": ".bilibili.com","expirationDate": 1675669981,"hostOnly": false,"httpOnly": false,"name": "_uuid","path": "/","sameSite": "unspecified","secure": false,"session": false,"storeId": "0","value": "A75779EB-4585-5878-3E43-6D32A3D55C1681507infoc","id": 1
},
{"domain": ".bilibili.com","hostOnly": false,"httpOnly": false,"name": "b_lsid","path": "/","sameSite": "unspecified","secure": false,"session": true,"storeId": "0","value": "81B856C10_17EFE7419A2","id": 2
},
{"domain": ".bilibili.com","expirationDate": 1675677272,"hostOnly": false,"httpOnly": false,"name": "b_ut","path": "/","sameSite": "unspecified","secure": false,"session": false,"storeId": "0","value": "5","id": 3
},
{"domain": ".bilibili.com","expirationDate": 1659689909,"hostOnly": false,"httpOnly": false,"name": "bili_jct","path": "/","sameSite": "unspecified","secure": false,"session": false,"storeId": "0","value": "a3b2fd3a87c83edcd60706d0e065a388","id": 4
},
{"domain": ".bilibili.com","expirationDate": 1676361767,"hostOnly": false,"httpOnly": false,"name": "blackside_state","path": "/","sameSite": "unspecified","secure": false,"session": false,"storeId": "0","value": "1","id": 5
},
{"domain": ".bilibili.com","expirationDate": 1647533178,"hostOnly": false,"httpOnly": false,"name": "bp_video_offset_1886803835","path": "/","sameSite": "unspecified","secure": false,"session": false,"storeId": "0","value": "627486273749365200","id": 6
},
{"domain": ".bilibili.com","expirationDate": 1738746918,"hostOnly": false,"httpOnly": false,"name": "buvid_fp","path": "/","sameSite": "unspecified","secure": false,"session": false,"storeId": "0","value": "1c8c7dbd98c2c133528a0cc10c550eda","id": 7
},
{"domain": ".bilibili.com","expirationDate": 1675674879,"hostOnly": false,"httpOnly": false,"name": "buvid_fp_plain","path": "/","sameSite": "unspecified","secure": false,"session": false,"storeId": "0","value": "undefined","id": 8
},
{"domain": ".bilibili.com","expirationDate": 1675669979,"hostOnly": false,"httpOnly": false,"name": "buvid3","path": "/","sameSite": "unspecified","secure": false,"session": false,"storeId": "0","value": "A95BACD3-53CB-3603-68EE-66D2B733716B80619infoc","id": 9
},
{"domain": ".bilibili.com","expirationDate": 1738741987,"hostOnly": false,"httpOnly": false,"name": "buvid4","path": "/","sameSite": "unspecified","secure": false,"session": false,"storeId": "0","value": "02D5CC9B-3352-A632-5E86-31182806CC8587874-022020615-B1501ZPp4rPBpvbG1w4m6Q%3D%3D","id": 10
},
{"domain": ".bilibili.com","expirationDate": 1676368449,"hostOnly": false,"httpOnly": false,"name": "CURRENT_BLACKGAP","path": "/","sameSite": "unspecified","secure": false,"session": false,"storeId": "0","value": "0","id": 11
},
{"domain": ".bilibili.com","expirationDate": 1676476538,"hostOnly": false,"httpOnly": false,"name": "CURRENT_FNVAL","path": "/","sameSite": "unspecified","secure": false,"session": false,"storeId": "0","value": "4048","id": 12
},
{"domain": ".bilibili.com","expirationDate": 1659689909,"hostOnly": false,"httpOnly": false,"name": "DedeUserID","path": "/","sameSite": "unspecified","secure": false,"session": false,"storeId": "0","value": "1886803835","id": 13
},
{"domain": ".bilibili.com","expirationDate": 1659689909,"hostOnly": false,"httpOnly": false,"name": "DedeUserID__ckMd5","path": "/","sameSite": "unspecified","secure": false,"session": false,"storeId": "0","value": "685099826b0c2de5","id": 14
},
{"domain": ".bilibili.com","expirationDate": 1675674878,"hostOnly": false,"httpOnly": false,"name": "fingerprint","path": "/","sameSite": "unspecified","secure": false,"session": false,"storeId": "0","value": "1c8c7dbd98c2c133528a0cc10c550eda","id": 15
}
]
'''url = "https://www.bilibili.com/"driver = webdriver.Edge(executable_path="D:/python/学习/selenium自动化学习/msedgedriver")mndl = Mndl(url, cookies_str, driver)
mndl.run()
time.sleep(10)

cookies_str就是我复制下来的cookie,是不是特别多,不过特别好用。主要奥,要加上三引号,这样就不会报错啦,你们看到的这个我修改过了一些值,然后你们就登录不了我的b站啦,要登录QQ空间也是这样,把url和cookie_str换了就可以。我在我的第三方文件里面写了很多的注释来方便理解,也方便我自己回忆

基本一些网站都可以模拟登录上了,非常的不容易,大家有兴趣也可以一起交流交流,说实在的,我现在还不知道爬虫爬取视频是怎么弄的,获取响应下载以后就是无法播放,而且好多视频都是断断续续的,不知道怎么办,you-get库试过了,但是报错,估计得后面自己修改一下里面的一些代码了,哎,加油加油,致敬每一个不甘平凡的自己。

冲冲冲!!!

“原谅我这一生放荡不羁爱自由,也会怕有一天会跌倒~~~,背弃了理想,谁人都阔以,也会怕哪天只你共我~~~”

selenium实现QQ空间和b站这些网站的模拟登录相关推荐

  1. python访问陌生人qq空间_在Python中使用Phantomjs模拟登录QQ空间

    一.问题来源 在使用Python进行数据爬取的过程中,我们一般使用Selenuim自动化测试工具对需要进行登录验证和动态JS数据的站点进行爬取.而与Selenuim相对应的浏览器组件,为了方便起见,一 ...

  2. 基于selenium的QQ空间自动点赞功能(2020年7月版)

    准备工作 简介: selenium是一个基于java开发的自动化浏览器处理器,它更像是浏览器驱动的代理. 配置: 它本身没有配置浏览器,因此需要配合本机上面安装的浏览器驱动一同使用.例如:Firefo ...

  3. Selenium学习——QQ空间点赞好友说说

    项目要求,给自己空间所有好友发的说说点赞&给单个好友所有说说点赞 遇到的问题: 问题一:只能获取头几条说说,其他获取不到原因:"feed_page_container"这个 ...

  4. selenium进行QQ空间登录

    一.selenium简要说明 selenium是基于浏览器自动化的一个模块,它能便捷的获取网站中动态加载的数据,和实现模拟登录.爬虫等操作 二.实现流程 2.1 selenium前置操作 1. 安装s ...

  5. Python使用Pyautogui和Selenium操作QQ空间进行纯自动点赞

    有的时候在看QQ空间的时候,总想着把别人的赞全部点一遍,这样子自己看得舒坦,别人也会觉得你会关注着他,但是我们该怎样做一个点赞程序呢,这是一个很重要的问题. 文章目录 制作准备 selenium的安装 ...

  6. Selenium+PhantomJS QQ空间模拟登陆

    QQ空间模拟登陆... 一般套路:浏览器监控切换到Network,然后输入账号密码,然后点击登录...但是加密啊那些很多 很多请求之类的 瞎搞. 太麻烦了.然而我们写代码的懂不起那些. 言归正传,C# ...

  7. 怎么下载QQ空间或者知乎类似网站上面的视频文件

    作者:良知犹存 转载请注明作者来源 围观欢迎添加WX:Allen-Iverson-me-LYN 作者:良知犹存 转载授权以及围观->欢迎添加WxId:Allen-Iverson-me-LYN 现 ...

  8. 空间?不是QQ空间,我们今天说网站空间

    一般的自助建站模式有选择建站系统-域名-空间....等等. 空间是什么意思?我们这里所说的空间,指的是网站空间,即"虚拟主机"的意思.网站空间简单地讲,就是存放网站内容的空间.网站 ...

  9. Python + selenium自动化工具 + 滑块验证码+点选验证码,实现模拟登录“中国铁路网12306”

    文章目录 一.模拟登录"中国铁路网12306 1.引入库 2.初始化 3.将点选验证码图片,通过人工打码,返回目标像素位置(json格式). 4.点选验证码位置得到后,需要鼠标左击进行模拟人 ...

最新文章

  1. MySQL数据库中文模糊检索问题
  2. 【Groovy】构建工具 ( 构建工具引入 | Gradle 构建工具作用 | 传统的依赖管理 )
  3. iOS多线程开发(三)---Run Loop(一)
  4. python爬取ajax动态内容肯德基门店,Python爬虫如何爬取KFC地址
  5. 对Faster R-CNN的理解(1)
  6. UOJ#196. 【ZJOI2016】线段树 概率期望,动态规划
  7. 线性条件随机场代码解读
  8. Bioconductor Workflows
  9. 2015年 StoiGdoi 反思总结与未来计划
  10. StrangeIoC —— Unity MVC 专属框架
  11. 理解Java的几张图
  12. 雷塞控制器SMC304简单介绍
  13. Java8 map转list集合
  14. C语言实现:素数的判断的多种方法
  15. python数学符号读法大全_数学符号及读法大全
  16. 第一批阳了的中年人:卷不赢,躺不平,摆不烂
  17. 手把手教你提升抖音直播间人气、流量的6个技巧
  18. EasyUI之Linkbutton按钮
  19. 微软与网景与浏览器之争
  20. Android中怎么重新启动APP或系统

热门文章

  1. 马化腾对C语言的重视
  2. c语言洗牌发牌 无大小王 分四堆,C语言入门题
  3. 留不住用户 FireFox中国市场占有率下跌8.6%
  4. [Vue warn] Failed to resolve component xxx
  5. 卸载WPS后怎么WORD的图标还是WPS
  6. 《了不起的盖茨比》----走出绿灯困境
  7. 《精彩网址大全——工商经济科学教育卷》前言
  8. 逍遥B2C商城源码(PC H5)v1.1.3
  9. 11、有线接入网技术
  10. Jenkins Bitbucket Vue 部署