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抓包分析 首先,我们想要模拟一 ...
随机推荐
- Alpha阶段--第六周Scrum Meeting
任务内容 本次会议为第六周的Scrum Meeting会议 召开时间为周四上午10点,在信南B317召开,召开时间约为30分钟,进行的项目规划和分工 队员 任务 张孟宇 进行用户登录界面的代码编写 吴 ...
- Android原生PDF功能实现:PDF阅读、PDF页面跳转、PDF手势伸缩、PDF目录树、PDF预览缩略图
1.背景 近期,公司希望实现安卓原生端的PDF功能,要求:高效.实用. 经过两天的调研.编码,实现了一个简单Demo,如上图所示. 关于安卓原生端的PDF功能实现,技术点还是很多的,为了咱们安卓开发的 ...
- 学习笔记32_EF查询优化
*如果有 var temp = from m in dbContext.Model1 where m.属性1 == value select m; foreach(var m1 in temp)//这 ...
- Covenant cc 用法
新出现的cc框架,之前看hack the box有人用过,不过还是用cs比较多, 这里把之前的笔记搬运过来 --- 设置covenant git clone --recurse-submodule ...
- 【Java必修课】String.intern()原来还能这么用(原理与应用)
1 简介 String.intern()是JDK一早就提供的native方法,不由Java实现,而是底层JVM实现,这让我们对它的窥探提高了难度.特别是在Oracle收购了Sun公司后,源代码不开源了 ...
- CSPS模拟 94
以后干脆不要在准备提交的代码里放调试信息. 再也不忘删printf可是memset还是看不见... T1 玄学错误,不想研究.skyh帮我研究出来了.HACKDATA:1 1 T2 傻逼做法. 发现一 ...
- $color$有色图
不想看题解的请速撤离 为防被骂灌输题解,撤离缓冲区 这里没字 $Ploya$神题一道,所以我自己做不出来,颓了一部分题解. 由于理(颓题)解不(没)深(脸)中途又拿了$std$对拍(输出中间结果并qj ...
- 卡特兰数&&prufer序列&&BSGS水题集
首先说一下BSGS的一个坑点: 解方程A^x≡B(mod p) 需要特判一个东西=>A%p==B%p==0? 如果相等的话puts("1")反之则无解. 因为如果A%p=0, ...
- 用python实现你的绘画梦想
导语: 你是否还在为当时年少时没有选择自己的梦想而伤心,是否还在为自己的无法成为绘画名家而苦恼,这一切都不需要担心.python都能帮你实现,诶!python怎么能画画呢,一些简单的图案没问题,但 ...
- 使用Typescript重构axios(二十八)——自定义序列化请求参数
0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...