requests请求库练习--GitHub登录
# coding = utf-8
"""
结合抓包工具,采用两种方法模拟登录github
直接利用session登录和利用requests登录
"""
import requests
import re # 设置请求头,伪装为浏览器
headers = {
'Host': 'github.com',
'Connection': 'keep-alive',
'Cache-Control': 'max-age=0',
'Origin': 'https://github.com',
'Upgrade-Insecure-Requests': '',
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
} def get_info():
"""
访问github页面,获取post提交时所需要的参数
:return:
"""
url = 'https://github.com/login'
r = requests.get(url, verify=False)
# 返回访问github后得到的源码
text = r.text # 通过正则,匹配post提交时需要提交的参数
# 通过抓包工具分析,此处需要token参数
token = re.findall(r'<input type="hidden" name="authenticity_token" value="(.*?)" />', text, re.S) return r.cookies, token[0] if __name__ == '__main__':
# """
# 通过使用session和requests两种方法来模拟登陆github,
# """
# # 方法一:通过session登陆
# # 创建session,保持会话
# session = requests.session()
#
# # 访问登录页面,获取cookies
# rr = session.get('https://github.com/login', verify=False)
#
# # 通过正则匹配变化参数token值
# token = re.findall(r'<input type="hidden" name="authenticity_token" value="(.*?)" />', rr.text, re.S)
#
# # 通过抓包工具,分析提交参数,并将其中的变化参数修改为代码获取的
# # 例如token参数
# data = {
# 'utf8': ' ✓',
# 'password': 'zhao0.0002',
# 'login': 'zInPython',
# 'commit': 'Sign in',
# 'authenticity_token': token[0],
# }
#
# # 访问参数提交的目标地址,并将需要参数传入
# post_url = 'https://github.com/session'
# r = session.post(post_url, data=data, headers=headers, verify=False)
#
# # 返回登录成功后的源码
# print(r.text) # 方法二:通过requests访问github
# 获取cookie和可变参数
cookies, token = get_info()
# 构造post提交需要的参数
data = {
'utf8': ' ✓',
'password': 'zhao0.0002',
'login': 'zInPython',
'commit': 'Sign in',
'authenticity_token': token,
}
# 访问登录提交参数网址
post_url = 'https://github.com/session'
r = requests.post(post_url, data=data, headers=headers, cookies=cookies, verify=False)
# 登录成功后的源码
print(r.text)
requests请求库练习--GitHub登录的更多相关文章
- 爬虫(一)—— 请求库(一)requests请求库
目录 requests请求库 爬虫:爬取.解析.存储 一.请求 二.响应 三.简单爬虫 四.requests高级用法 五.session方法(建议使用) 六.selenium模块 requests请求 ...
- 爬虫之requests请求库
介绍 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) #注意:requests库发送请求将网页内容下 ...
- requests请求库
# coding = utf-8 """ 同urllib一样 requests 也是发送http请求的第三方库 兼容Python2和3 实现了http的绝大部分功能. 安 ...
- Python爬虫requests请求库
requests:pip install request 安装 实例: import requestsurl = 'http://www.baidu.com'response = requests. ...
- 爬虫之requests请求库高级应用
1.SSL Cert Verification #证书验证(大部分网站都是https) import requests respone=requests.get('https://www.12306. ...
- python发送requests请求时,使用登录的token值,作为下一个接口的请求头信息
背景介绍: 发送搜索请求时,需要用到登录接口返回值中的token值 代码实现: 登录代码: 搜索接口:
- python+requests 请求响应文本出错返回“登录超时”
Python+requests请求响应:"msg":"登录过时" 1.出错原代码: import requests import json#页面按条件搜索返回相 ...
- Selenium请求库
阅读目录 一 介绍 二 安装 三 基本使用 四 等待元素被加载 五 选择器 六 元素交互操作 七 其他 八 项目练习 九 破解登录验证 一 介绍 1.selenium是什么? selenium最初是一 ...
- 利用Python模拟GitHub登录
最近学习了Fiddler抓包工具的简单使用,通过抓包,我们可以抓取到HTTP请求,并对其进行分析.现在我准备尝试着结合Python来模拟GitHub登录. Fiddler抓包分析 首先,我们想要模拟一 ...
随机推荐
- 数据库系统(六)---MySQL语句及存储过程
一.DDL.DML.DCL常用语句 1.DDL(Data Definition Language)数据库定义语言 (1)数据库模式定义 #创建数据库 create database if exsite ...
- Docker 实战—使用 Dockerfile 构建镜像
Dockerfile 指令详解请访问:https://www.cnblogs.com/cloudfloating/p/11737447.html 使用 Alpine Linux 作为基础镜像 Alpi ...
- SpringBoot整合MybatisPlus3.X之Wrapper(五)
官方文档说明: 以下出现的第一个入参boolean condition表示该条件是否加入最后生成的sql中 以下代码块内的多个方法均为从上往下补全个别boolean类型的入参,默认为true 以下出现 ...
- 在.NET Core 3.0中发布单个EXE文件
假设我有一个简单的“ Hello World”控制台应用程序,我想发送给朋友来运行.朋友没有安装.NET Core,所以我知道我需要为他构建一个独立的应用程序.很简单,我只需在项目目录中运行以下命令: ...
- 暑期集训20190730 取模(mod)
[题目描述] 给定一个长度为n的非负整数序列a,你需要支持以下操作: 1:给定l,r,输出a[l]+a[l+1]+…+a[r]. 2:给定l,r,x,将a[l],a[l+1],…,a[r]对x取模. ...
- MIT线性代数:21.特征值和特征向量
- 通俗易懂了解React生命周期
1.前言 学习React时,学习组件的生命周期是非常重要的,了解了组件的"从无到有再到无"所经历的各个状态,对日后写高性能的组件会有很大的帮助. 2.生命周期图 React的生命周 ...
- 01-MyBatis启动流程分析
目录 MyBatis简单介绍 启动流程分析 简单总结 附录 MyBatis内置别名转换 参考 MyBatis简单介绍 MyBatis是一个持久层框架,使用简单,学习成本较低.可以执行自己手写的SQL语 ...
- 服务器spring boot版本,平滑升级
1.在pom文件中加入: <!--平滑升级包 开始 --> <dependency> <groupId>org.springframework.boot</g ...
- Flink入门(一)——Apache Flink介绍
Apache Flink是什么? 在当代数据量激增的时代,各种业务场景都有大量的业务数据产生,对于这些不断产生的数据应该如何进行有效的处理,成为当下大多数公司所面临的问题.随着雅虎对hadoop的 ...