python 自动登录网站_解放双手,用Python自动登录25个主流网站

news/2024/5/19 20:20:22/文章来源:https://blog.csdn.net/weixin_39874366/article/details/110041374

原标题:解放双手,用Python自动登录25个主流网站

用 Python 写爬虫脚本是大家经常遇到的需求。在这个过程中,避开不了登录这一关。

使用 Python 一般会用 request 库,补充 header 中的 post 要素,有些还会有 隐藏的 hidden 参数,可以通过浏览器 F12 或者元素审查来发现,对于初学者来说都是一个坑。

还有需要解决验证码的问题,一种方法是下载验证码图片识别验证码再次post,或者使用云打码平台。当然,有些验证码及其变态就不那么容易解决了,比如选字顺序、滑块、12306那种正常人都会选错的。

01f5c1e908314b9382cf26d98f051875.png

本篇我们分享一个GitHub项目《awesome-python-login-model》,主要就是利用 Python 解决模拟登录这个问题。截至目前已经实现了25个主流平台,在GitHub上收到12.1k个星。

Github链接:https://github.com/Kr1s77/awesome-python-login-model

▍已完成的主流网站

6b859b72cd5f4573800c73a401d34b61.png

上面是作者已经完成的一些主流网站了,其中有的是通过selenium登录,有的是通过抓包直接模拟登录,有的是利用scrapy 框架。

这个很容易理解,因为有的网站设计比较复杂,通过抓包很难实现模拟登录,这样用 selenium+webdriver 就会相对轻松一些。

虽然在登录的时候采用的是selenium,为了效率, 我们可以在登录过后得到的cookie维护起来,然后调用requests或者scrapy等进行数据采集,这样数据采集的速度可以得到保证。

▍模拟登录GitHub

这里给大家展示一个模拟登录GitHub的代码。

"""

github第二种登录方式

info:

author:CriseLYJ

github:https://github.com/CriseLYJ/

update_time:2019-3-7

"""

importre

importrequests

fromlxml importetree

classLogin(object):

classGithubLogin(object):

def__init__(self, email, password):

# 初始化信息

self.headers = {

'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',

'Referer': 'https://github.com/',

'Host': 'github.com'

}

self.session = requests.Session

self.login_url = 'https://github.com/login'

self.post_url = 'https://github.com/session'

self.session = requests.Session

self.email = email

self.password = password

# 模拟登录

deflogin_GitHub(self):

# 登录入口

post_data = {

'commit': 'Sign in',

'utf8': '✓',

'authenticity_token': self.get_token,

'login': self.email,

'password': self.password

}

resp = self.session.post(

self.post_url, data=post_data, headers=self.headers)

print( 'StatusCode:', resp.status_code)

ifresp.status_code != 200:

print( 'Login Fail')

match = re.search( r'"user-login" content="(.*?)"', resp.text)

user_name = match.group( 1)

print( 'UserName:', user_name)

response = self.session.post(self.post_url, data=post_data, headers=self.headers)

print(response.status_code)

print(post_data)

ifresponse.status_code == 200:

print( "登录成功!")

else:

print( "登录失败!")

# 获取token信息

# Get login token

defget_token(self):

response = self.session.get(self.login_url, headers=self.headers)

html = etree.HTML(response.content.decode)

token = html.xpath( '//input[@name="authenticity_token"]/@value')[ 0]

returntoken

ifresponse.status_code != 200:

print( 'Get token fail')

returnNone

match = re.search(

r'name="authenticity_token" value="(.*?)"', response.text)

ifnotmatch:

print( 'Get Token Fail')

returnNone

returnmatch.group( 1)

if__name__ == '__main__':

email = input( '请输入您的账号: ')

password = input( '请输入您的密码: ')

email = input( 'Account:')

password = input( 'Password:')

login = Login(email, password)

login = GithubLogin(email, password)

login.login_GitHub

相信这对初学爬虫的朋友是一个很好的教程。

但提示一下,模拟登录的代码随时都有可能失效,因为前端的网页HTML、CSS、JS等结构可能会根据公司业务调整之类的发生变化。

所以,重点是通过实例掌握背后的实现原理和绕过反爬的技巧,学会这些就可以自己调试完成登录,那时候你也可以成为 contributor 了!

Github链接:https://github.com/Kr1s77/awesome-python-login-model

作者:Boy哥

来源:GitHuboy(Handsome_Coder)

爬虫必备工具,掌握它就解决了一半的问题 返回搜狐,查看更多

责任编辑:

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

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

相关文章

在服务器上同时执行 多个kettle_一台服务器上如何创建多个网站?

一台服务器上如何放多个网站呢?其实很简单,我们以阿里云服务器为例。教大家用宝塔面板一键部署,轻松添加多个站点。(在步骤12)什么是宝塔面板:宝塔Linux面板是提升运维效率的服务器管理软件,支持…

什么是CDN,网站被攻击时该怎么防

日前,空前高涨的网络攻击威胁着大量的站长,很多站长为了应对网络攻击可谓是耗尽心力,取得的效果确是不尽人意的。 首先我们应该了解什么是网络攻击,网络攻击常见的有DDOS攻击,WEB应用攻击等。 DDOS攻击全称也叫分布式…

php1139,已解决!php-fpm配置弄错了,面板,网站都502 Bad Gateway

[求助帖]已解决!php-fpm配置弄错了,面板,网站都502 Bad Gateway铁牌会员158.00 价值分总 16,650 次阅读 13 张回复 hyb9512 发表于 2014-03-05 14:24:25本帖最后由 hyb9512 于 2014-3-7 00:40 编辑之前都一直好好的,今天网站打…

java jpanel 数据刷新6,Java提取网站后台数据进行处理并排名

Java提取网站后台数据进行处理并排名一、网页分析打开网站后,可以看到这个网站的编程语言排名情况。我们选择下图中的图表,这个图表中有2001-2019年的编程语言每个月的使用率,我需要它的数据。二、数据提取在网页点右键,点击查看源…

服务器ip端口ip显示全部未分配,IIS网站属性里,只有(全部未分配),找不到IP地址的解决方法...

IIS网站属性里,只有(全部未分配),找不到IP地址的解决方法今天配置服务器的时候发现有台服务器,iis里面没有ip地址如上图所示亲测的解决方法:修改下计算机名称,然后重启服务器就可以了。具体步骤如下:我的电…

Matlab标定工具箱使用教程(对应英文网站)

Matlab标定工具箱使用教程 这个教程将带你完整地利用20到25张平面棋盘格图像进行相机标定。 这个教程将让你学会如何使用所有工具箱的特征:载入图像、提取图像角点、运行标定引擎、显示结果、控制精度 添加和删减图像、图像矫正、导出标定不同格式的数据...这个教程…

html铺满整个页面_自适应网站页面适配实现和基本原理讲解

随移动端设备的普及,移动web网站成为了前端工程师工作主攻点诸多的手机厂商,导致每种手机机型、分辨率等手机参数相差很多,同时给前端开发人员增加了工作难度此时手机端的适配是个不得不解决的问题下面介绍一下网站适配的实现及原理是如何操作…

css不显示_Web 性能优化:21 种优化 CSS 和加快网站速度的方法

SegmentFault 社区专栏:终身学习者作者:Tam Hanna译者:前端小智 来源:creativebloqCSS 必须通过一个相对复杂的管道,就像 HTML 和 JavaScript 一样,浏览器必须从服务器下载文件,然后进行解析并将…

html5 企业网站模板 多语言,通用HTML5企业网站模板

通用HTML5企业网站模板资源下载此资源下载价格为4D币,请先登录资源文件列表codedown123-0820-24/about-us.html , 24118codedown123-0820-24/contact.html , 22243codedown123-0820-24/css/animate.min.css , 53032codedown123-0820-24/css/bootstrap.min.css , 122…

麒麟服务器上安装.Net Core环境并发布web网站

本文主要记录在麒麟服务器上安装.Net Core的运行环境,并运行.Net Core webApi程序。 准备工作 我使用的是华为云主机,操作系统为:银河麒麟高级服务器操作系统V10,CPU为鲲鹏,架构为Arm64。 如何购买一台云主机&#…

不吹不黑,“滴滴,移动端静态网站开发

如果让你组织一次团建活动,你怎么处理?(对,这是滴滴技术面的问题,呵呵哒) 反正最后滴滴的定级和薪资也被压得更惨,职级比其他offer至少低了两个档次,呵呵哒。 在下也不是故意抹黑滴滴,但事实就…

wap网站制作教程,Github标星5.3K

这里是网站制作的内容 这里是网站推广的内容 OK,完成了上面的步骤,下面我们要看一看运行结果了,稍微检查一下左边的运行代码,看看有没有粗心错误,单击上部的预览按钮,如果没有错误的话就会在右边显示编程的…

最后的绿洲服务器人数查询网站,末日生存MMO《最后的绿洲》重启压力测试,Steam体验人数回升...

波兰独立开发团队Donkey Crew的游牧生存MMO《最后的绿洲》(英文名《LastOasis》)4月5日重启服务器进行压力测试,所有在Steam购买并仍持有游戏的玩家都可以登录服务器进行体验。《最后的绿洲》3月27上线Steam平台开启抢先体验,游戏发布首日表现顺畅,《最后…

个人网站新功能:聊天室

之前在个人网站上预留了一个网页聊天室的功能,在这次寒假抽出了时间来完成。快速访问 简要记录一下网页聊天室的设计过程。 AJAX轮询 在设计之前一直纠结该使用何种方式来实现网页聊天室这个模块,最基本的想法是使用ajax来实现轮询,从而达…

全球最大同性交友网站的所有用户密码都无法登录!!!

一、前言 有一个多月没有提交代码了,今天提的时候怎么也提交不上去。 意思是你原先的密码凭证从 2021 年 8 月 13 日开始就不能用了,必须使用个人访问令牌(personal access token),就是把你的密码替换成 token。 二、…

简谈网站架构演变过程

传统架构 传统的SSH架构,分为三层架构 web控制层、业务逻辑层、数据库访问层。 传统架构也就是单点应用,就是大家在刚开始初学JavaEE技术的时候SSH架构或者SSM架构,业务没有进行拆分,都写同一个项目工程里面,一般是适…

使用WebPageTest评估Web网站性能

在线版本 登录https://webpagetest.org,输入需要测试的网站,然后还可以选对应的请求地址和浏览器 我们还可以点击Advanced Settings,选择更多高级选项 在这里举几个例子: Connection:模拟用户网络的情况Desktop Br…

创建一个过滤器,实现网站访问计算器的功能,并在web.xml文件的配置中,将网站访问量的初始值设为5000

10100000000000 创建一个过滤器,实现网站访问计算器的功能,并在web.xml文件的配置中,将网站访问量的初始值设为5000 (1)创建CountFilter的类,此类实现javac.servlet.Filter接口,通过此过滤器实…

如何给网站添加百度统计

1.首先搜索百度统计,然后注册,登录账号 2.登录进来之后,点击新增网站 3.输入网站的基本信息 4.添加网站成功之后,返回到百度统计的代码获取页面上,根据安装说明在自己的页面上添加代码 愿上述内容对你有所帮助&#xf…

网站加载速度影响因素以及如何增强

网站打开速度是用户体验和 SEO 营销的要点之一。许多研究已经证明,当网页加载时间超过 3 秒,超过 50% 的用户会关闭网页。网站打开过慢会造成负面用户体验,增加跳出率,导致你的网站在搜索结果页的位置较低。SonderCloud恒创科技总…