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

news/2024/5/9 3:17:07/文章来源:https://blog.csdn.net/l202226/article/details/122955476

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

我们先说一下思路,我们在使用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库试过了,但是报错,估计得后面自己修改一下里面的一些代码了,哎,加油加油,致敬每一个不甘平凡的自己。

冲冲冲!!!

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_704547.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

局域网内建立git服务器,并实现不同主机的代码共享(无需通过github网站)

最近需要用MATLAB在远程的服务器上的GPU跑深度学习的程序,但是可视化连接了远程服务器以后,操作非常的卡顿,所以我就在本机上调试好代码,在本机的cpu下跑通了,再搬到服务器上改一下配置用GPU去跑。整个过程&#xff0c…

图片转svg标注_两个免费网站轻松搞定图片文件压缩转化!

关注点击蓝字,关注我吧图片压缩文件转格式两个免费网站轻松搞定免费处理图片文字网站前几天做公号的时候,上传图片遇到了图片过大无法上传的问题。这两个网站可以看做是兄弟俩,今天推荐给大家,省去我们下载安装软件的麻烦。01 I❤…

api服务器开发语言,【API编写】介绍一个国内强大的API接口文档写作网站showdoc - 最好的编程语言 - 博客园...

这几天要写一个接口API文档,经理给我发过来一个,说要弄一个这样的接口文档,我一看,这可麻烦呀,有大纲有详细,我以为要用divcss去一个页面一个页面做呢,这工作量可不小,网站一搜索&am…

网站打不开 换服务器,【图】网站更换服务器打不开—深圳天下信息网

近有一些站长咨询网站更换服务器后打不开,今天小编和大家一起聊一聊!1、网站更换服务器打不开首先考虑的是程序是否完整。更换服务器之前,首先需要完整备份好程序文件,备份之前建议是先关停网站,以免有的数据库文件因为…

从上往下 流式布局_揭秘做好网站结构优化的4步(下)

昨天说了关于优化网站结构的前二条,网站代码的优化和网站目录的优化,虽然这两条很重要,但是这两条还是内部的东西,要真正做好,还需要网站结构优化的内外结合才能做到一个好的优化效果!1. 清晰的url优化&…

大型网站 linux,大型网站架构演变

之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么…

主题图标_Avada主题网站favicon图标设置详细图文教程

Avada主题网站favicon图标如何设置?很多网站打开后在浏览器标题栏会发现前面有一个小图标,在浏览器标签页和收藏夹中也能看到。这个标志名叫 favicon图标、ico图标、网站图标。是展示网站个性的logo标识,能够让网站看起来每专业、美观、有个性…

服务器开好服怎么和网站连,vps开服连服务器没反应

vps开服连服务器没反应 内容精选换一换有以下几种现象:将制作好的SD卡插入开发者板并上电后,开发者板LED1与LED2灯状态信息异常。将制作好的SD卡插入开发者板,并通过USB方式连接Ubuntu服务器,上电、开发者板启动完成后&#xff0c…

应用程序池超出其作业限制设置_网站改版注意事项 - 蜘蛛池

最蜘蛛池,快速提高网站收录,百度蜘蛛池、搜狗蜘蛛池、360蜘蛛池、神马蜘蛛池、繁殖池、权重池,欢迎使用。正常的网站页面发展过程中毫无疑问网站是需要做改版的,可是你了解网站改版的一些常见问题吗?还是回答一场说改就改的实际操…

跨境电商自建站后台系统原型rp_没学历做跨境电商好做吗?虾皮shopee开店没有流水怎么办...

(shopee)虾皮刚诞生的时候我就做了,在电商这个行业也有自己的一些经验。经验也许没有其他大卖家丰富,但会将我知道的都进行分享。如果有不懂(shopee)虾皮问题可以我(V:2787823020)。我这里给大家安排一堂直播课,可以系统的帮你解决…

安居客检测到网页抓取_原创内容不收录 解决网站抓取异常的有效分析方法

有的网站明明内容优质原创,用户可以正常访问,但偏偏网络蜘蛛无法正常访问抓取导致无法被收录,搜索结果覆盖率偏低,对搜索引擎和网站都是一种损失,这种情况就是抓取异常。对于大量内容无法正常抓取的网站,搜…

快速排名系统询火星推荐_搜狗网站快速排名系统 - 新站权重如何快速提升

原出处:超级排名系统原文链接:http://www.chaojipaiming.com搜狗网站快速排名系统注册地址 seo.chaojipaiming.com 网站关键词快速排名优化,7-15天关键词排名到首页,PC端和移动端都可以优化,支持百度、搜狗、360、神马…

php网站添加cnzz,cnzz代码添加元素到页面

搜索热词首先在cnzz上注册账号后,他会给你以下代码:document.write(unescape("%3Cspan idcnzz_stat_icon_xxxxxxxxxx%3E%3C/span%3E%3Cscript src" cnzz_protocol "s19.cnzz.com/z_stat.PHP%3Fid%3D1252929438%26show%3Dpic1 typetext/…

Gradle自动化之自动打包并上传到fir测试网站

前言 每个项目都需要测试,没有测试的项目是无法发布到线上的 而由于安卓的碎片化,公司里测试需要测几种不同版本的系统和不同厂商(型号)的手机,所以我平时发的测试包必须放到某个服务器或网站上,通过二维码的方式给测试,这样才能让测试流程更方便 之前的流程都是,先打包,然后…

华为云服务的购买和建站

1、购买华为云服务(选择centos7.6)其他设置默认 2、去控制台先关机然后重置密码 3、设置安全组(相当于门卫) 4、常见端口 使用SSH SecureShell Client建站 使用Xshell6和Xftp6建站(推荐)

网站可以正常访问但ping不通

原因: 网站服务器为了防止DoS攻击,通常在防火墙里设置拦截ICMP报文,而ping报文正是ICMP报文的一种,当然ping不通了。 名称解析: DoS攻击:DoS是Denial of Service的简称,即拒绝服务&#xff0…

大型网站架构改进历程:存储的瓶颈(上)

大型网站架构改进历程:存储的瓶颈(上) width"22" height"16" src"http://hits.sinajs.cn/A1/weiboshare.html?urlhttp%3A%2F%2Fwww.csdn.net%2Farticle%2F2015-01-22%2F2823669%2F1&t…

大型网站架构演变和知识体系--转

之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么…

白话Elasticsearch48-深入聚合数据分析之 Percentiles Aggregation-percentiles百分比算法以及网站访问时延统计及Percentiles优化

文章目录概述官方说明示例Percentiles优化 compression概述 继续跟中华石杉老师学习ES,第48篇 课程地址: https://www.roncoo.com/view/55 官方说明 Percentiles Aggregation: 戳这里 示例 需求: 网站访问时延统计 为了演示…

白话Elasticsearch49-深入聚合数据分析之 Percentile Ranks Aggregation-percentiles rank以及网站访问时延SLA统计

文章目录概述官方说明案例概述 继续跟中华石杉老师学习ES,第49篇 课程地址: https://www.roncoo.com/view/55 官方说明 Percentiles Ranks Aggregation:戳这里 更多请参考官网 案例 需求:在200ms以内的,有百分之多少…