# 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登录的更多相关文章

  1. 爬虫(一)—— 请求库(一)requests请求库

    目录 requests请求库 爬虫:爬取.解析.存储 一.请求 二.响应 三.简单爬虫 四.requests高级用法 五.session方法(建议使用) 六.selenium模块 requests请求 ...

  2. 爬虫之requests请求库

    介绍 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) #注意:requests库发送请求将网页内容下 ...

  3. requests请求库

    # coding = utf-8 """ 同urllib一样 requests 也是发送http请求的第三方库 兼容Python2和3 实现了http的绝大部分功能. 安 ...

  4. Python爬虫requests请求库

    requests:pip install  request 安装 实例: import requestsurl = 'http://www.baidu.com'response = requests. ...

  5. 爬虫之requests请求库高级应用

    1.SSL Cert Verification #证书验证(大部分网站都是https) import requests respone=requests.get('https://www.12306. ...

  6. python发送requests请求时,使用登录的token值,作为下一个接口的请求头信息

    背景介绍: 发送搜索请求时,需要用到登录接口返回值中的token值 代码实现: 登录代码: 搜索接口:

  7. python+requests 请求响应文本出错返回“登录超时”

    Python+requests请求响应:"msg":"登录过时" 1.出错原代码: import requests import json#页面按条件搜索返回相 ...

  8. Selenium请求库

    阅读目录 一 介绍 二 安装 三 基本使用 四 等待元素被加载 五 选择器 六 元素交互操作 七 其他 八 项目练习 九 破解登录验证 一 介绍 1.selenium是什么? selenium最初是一 ...

  9. 利用Python模拟GitHub登录

    最近学习了Fiddler抓包工具的简单使用,通过抓包,我们可以抓取到HTTP请求,并对其进行分析.现在我准备尝试着结合Python来模拟GitHub登录. Fiddler抓包分析 首先,我们想要模拟一 ...

随机推荐

  1. Java多线程编程(三)线程间通信

    线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体.线程间的通信就是成为整体的必用方案之一,可以说,使线程间进行通信后,系统之间的交互性会更强大,在大大提高CPU利用率的同时 ...

  2. 数据结构(四十四)交换排序(1.冒泡排序(O(n²))2.快速排序(O(nlogn))))

    一.交换排序的定义 利用交换数据元素的位置进行排序的方法称为交换排序.常用的交换排序方法有冒泡排序和快速排序算法.快速排序算法是一种分区交换排序算法. 二.冒泡排序 1.冒泡排序的定义 冒泡排序(Bu ...

  3. FRP代理及其在数据库安全上的实践

    1 代理 现如今的互联网世界里,代理服务已经十分常见,它通常作为一个第三方或者说中转站角色替代用户取得信息或者服务. 根据代理对象的不同,代理服务可以分为正向代理和反向代理. 1.1 正向代理 我们通 ...

  4. html获得当前日期

    <html> <head> <title> </title> </head> <body> <!-- 获得当前日期(年月日 ...

  5. 转:如何让phpmyadmin输入密码再进入

    对于很多不熟悉PHP环境安装的朋友来说,用集成环境可以更快的上手,更方便的搭建PHP的运行环境,但是,WAMP的集成环境仅仅是将底层基础工作做好了,有些个别关键的配置操作并没有集成到环境安装中,所以给 ...

  6. MIT线性代数:21.特征值和特征向量

  7. 学习笔记47_关于Session局限性问题,Memcache

    三大问题: 1.Session性能问题 2.不能稳定输出.考虑使用进程外Session 3.组成集群,登录数据进行共享 (比如说像百度,百度网盘,百度文库等是使用不同的服务机器的,怎样避免使用的时候不 ...

  8. PyCharm的几个使用技巧

      PyCharm是个十分强大的Python编辑器,笔者在日常的工作中学到了很多该IDE的使用技巧,有的是从别人那里学到的,有的是自己学习的.笔者深感自己的开发能力不足,因此希望能够将这些使用技巧记录 ...

  9. P2934 [USACO09JAN]安全出行

    图论瞎搞...... solution: 按例化简:给定一个无向图,保证单源最短路唯一,求每个点到1号点的最短路最后一条边被封锁的情况下的最短路 乍一看,应该是次短路,但是稍微用脚趾头想想都能发现不是 ...

  10. P3976 [TJOI2015]旅游(未完成)

    #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #inc ...