# 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. SpringBoot与MybatisPlus3.X整合之通用枚举(十二)

    一 通用枚举 解决了繁琐的配置,让 mybatis 优雅的使用枚举属性! 自3.1.0开始,可配置默认枚举处理类来省略扫描通用枚举配置 默认枚举配置 升级说明: 3.1.0 以下版本改变了原生默认行为 ...

  2. 【Windows删除指定后缀文件cmd命令】

    如果我想删除指定目录下的"*.mp4"后缀文件 在命令行中,进入指定目录,输入 del [/q] "*.mp4" del 命令是删除文件cmd(命令行)命令. ...

  3. [Flink]Flink1.6三种运行模式安装部署以及实现WordCount

    前言 Flink三种运行方式:Local.Standalone.On Yarn.成功部署后分别用Scala和Java实现wordcount 环境 版本:Flink 1.6.2 集群环境:Hadoop2 ...

  4. nginx篇高级用法之基于TCP/UDP的四层调度

    nginx 从1.9版本开始支持基于TCP/UDP的四层调度,在编译nginx时使用--with-stream开启该模块 支持TCP/UDP调度时,支持给所有的软件做调度器,例如:nfs smb ft ...

  5. Topshelf+Quatz.Net的简单使用

    Topshelf+Quatz.Net的简单使用 一  Topshelf概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Servic ...

  6. jq实现监听滚动条导致导航栏变色

    1效果图 2 html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...

  7. OTA升级详解(三)

    君子知夫不全不粹之不足以为美也, 故诵数以贯之, 思索以通之, 为其人以处之, 除其害者以持养之: 出自荀子<劝学篇> 终于OTA的升级过程的详解来了,之前的两篇文章OTA升级详解(一)与 ...

  8. PowerDesigner列名、注释内容互换

    资料来源:PowerDesigner列名.注释内容互换 文中一共提供了2种操作的代码. (1)将Name中的字符COPY至Comment中 (2)将Comment中的字符COPY至Name中 使用方法 ...

  9. CentOS安装图解(在VMware 8上安装)

    近期准备学习一下CentOS,打算先在VMware上装一个用于初步了解. 整体步骤如下: 一.获取CentOS安装镜像.可以从以下几个地方获取,顺便提一句,我是从163下载的. 1.CentOS的官方 ...

  10. pandas的使用(3)

    pandas的使用(3)