python学习,使用requests库来模拟登录github,post请求。
这次我们要模拟登录的页面是

首先我们先尝试着登陆一遍分析一下请求,
打开开发者工具下的network选项,

可以很清楚的看到这个会话session,而且是post请求,这多半是我们刚才登录是所发出去的请求,我们往下拉查看form data

这里要注意,这个authenticity_token的值该怎么获取,我们从网页的源代码中查找这个关键字,

发现这个值就在页面中,而且每次刷新之后这个value总是会不断地变化,好,分析完毕后,我们开始构建代码
import requests
from bs4 import BeautifulSoup
import time
#自己写的,模块化一哈,舒服一哈,2019.5.6 22.22
#模拟登陆练习,登录github
class login(object):
def __init__(self):
self.headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'
}
self.first_url='https://github.com/login'
self.second_url='https://github.com/session'
self.test_url='https://github.com/?tab=stars' #可以设置成你的个人主页url
self.session=requests.Session()
def get_log(self):#这个方法是把token信息解析找到后传递
html=requests.get(url=self.first_url,headers=self.headers)
soup=BeautifulSoup(html.text,'lxml')
tokens=soup.find_all('input',type="hidden")[1]
at=tokens.attrs['value']
return at
def post_log(self,login,password):
#这是要提交的表单
data={
'commit':'Sign in',
'utf8':' ✓',
'authenticity_token':self.get_log(),
'login':login,
'password':password,
'webauthn-support':' supported'
}
res=self.session.post(url=self.second_url,data=data,headers=self.headers)
self.test_func()
def test_func(self): #这个方法用来模拟登陆后请求我们的个人主页,然后把源码保存到文件里,以此来确定是否模拟登录成功。
res2=self.session.get(url=self.test_url,headers=self.headers)
with open('gitstar.html','wb') as f:
f.write(res2.content)
if __name__=='__main__':
jessus=login()
jessus.post_log('你的用户名','你的密码')
运行一下,我们把保存的html文件打开

成功了,确实是我们的github主页!
希望能给你提供思路,主要是requests post 请求,还有维持一个会话session很重要,如果你觉得文章还不错,点个赞吧,谢谢!
python学习,使用requests库来模拟登录github,post请求。的更多相关文章
- python学习(23)requests库爬取猫眼电影排行信息
本文介绍如何结合前面讲解的基本知识,采用requests,正则表达式,cookies结合起来,做一次实战,抓取猫眼电影排名信息. 用requests写一个基本的爬虫 排行信息大致如下图 网址链接为ht ...
- [Python] Python 模拟登录,并请求
Python 模拟登录,并请求 # encoding: utf- import requests import socket import time socket.setdefaulttimeout( ...
- Python学习day45-数据库(总结)
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- Python学习day42-数据库的基本操作(1)
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- Python学习day41-数据库(1)
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- python下载安装requests库
一.python下载安装requests库 1.到git下载源码zip源码https://github.com/requests/requests 2.解压到python目录下: 3.“win+R”进 ...
- Python学习day44-数据库(单表及多表查询)
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- Python学习day43-数据库(多表关系)
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- 使用requests库提交multipart/form-data 格式的请求
前言: Requests是用Python语言编写,基于urllib,采用Apache2 Licensed开源协议的HTTP库.它比urllib更加方便,可以节约我们大量的工作,完全满足HTTP测试需求 ...
随机推荐
- BZOJ_3790_神奇项链_manacher+贪心
BZOJ_3790_神奇项链_manacher+贪心 Description 母亲节就要到了,小 H 准备送给她一个特殊的项链.这个项链可以看作一个用小写字 母组成的字符串,每个小写字母表示一种颜色. ...
- Eclipse中执行sql脚本文件
转自:https://blog.csdn.net/weixin_37778823/article/details/79614281 在Eclipse中导入或新建sql脚本文件(.sql文件),选择指定 ...
- 解决 jquery dialog 弹框destroy销毁方法不能把弹出元素设置成初始状态
在使用jquery ui中的dialog弹出窗口的时候遇到一个问题,就是页面弹出窗口关闭后希望表单元素能回到初始状态 例如文本框输入内容后关闭dialog后里面的内容清除,使用了destroy方法也不 ...
- PCB .NET Reactor 加密工具(NecroBit加密技术)
在PCB行业中,我们使用的软件或脚本绝大多数都用非编译型语言写程序,而从一开始选择这种编程语言,就注定了程序的源码有被曝露风险.我们PCB工程系统用.NET语言编写,C#编译后会被转换为IL代码的中间 ...
- E20171121-sl
contrast n. 对比,对照; 差异; 对照物,对立面; [摄] 反差;
- J20170604-hm
丸める 四舍五入 文字化け 乱码 わきまえる 弁える 辨别,识相 御構い 张罗,招待,款待 お構いなしに 不加考虑 しおり ブックマーク 书签 スタイルシート 样式表
- bzoj 1646: [Usaco2007 Open]Catch That Cow 抓住那只牛【bfs】
满脑子dp简直魔性 模拟题意bfs转移即可 #include<iostream> #include<cstdio> #include<queue> using na ...
- bzoj 1611: [Usaco2008 Feb]Meteor Shower流星雨【BFS】
t记录每个格子最早被砸的时间,bfs(x,y,t)表示当前状态为(x,y)格子,时间为t.因为bfs,所以先搜到的t一定小于后搜到的,所以一个格子搜一次就行 #include<iostream& ...
- 服务器出现 nginx 502 Bad Gateway
发生原因1.PHP FastCGI进程数不够用 当网站并发访问巨大时,php fastcgi的进程数不有一定的保障,因为cgi是单线程多进程工作的,也就是说cgi需要处理完一个页面后再继续下一个页面. ...
- swoole之 swoole_process 应用于TP框架
swoole_process 实现了多进程的管理,多个进程同时进行采集任务, 公司的框架比较low,用的tp框架,结合tp框架实现多进程的采集 这是swoole好的学习资源 https://segme ...