GitHub登录

分析登录页面

开发者工具分析请求

从session请求分析得知:

1.请求的URL为:https://github.com/session

2.该请求为post请求,即需要上传data表单,所以我们需要分析form-data

由form-data分析得知:

1.login:GitHub的账号

2.password:GitHub的密码

3.authenticity_token:每次请求时都发生变动

4.其余参数没有特殊的变动

因此需要分析authenticity_token的规律,经过分析源代码得知:

在login页面中存在该参数,且每次请求该页面时该参数都发生变动

因此我们需要使用维持会话的方式抓取该参数

import requests

session = requests.Session()    #实例化,维持会话
url_login = 'https://github.com/login'
response = session.get(url_login)
#通过正则获取token值
authenticity_token = re.findall('name="authenticity_token" value="(.*?)" />',response.text)[0]
print(authenticity_token)

当我们获取该参数后,即可以代入form-data中完成登录

附上全部代码

import requests
import re session = requests.Session() #实例化,维持会话 def token():
url_login = 'https://github.com/login'
response = session.get(url_login)
#通过正则获取token值
authenticity_token = re.findall('name="authenticity_token" value="(.*?)" />',response.text)[0]
return authenticity_token #返回token值 def url_session(token):
url = 'https://github.com/session'
data = {
'commit': 'Sign in',
'utf8': '✓',
'authenticity_token': token, #authenticity_token参数
'login': '输入账号', #你的账号
'password': '输入密码', #你的密码
'webauthn-support': 'supported',
'required_field_852e': '',
'timestamp': '',
'timestamp_secret': '850cb01230466a48f29899e2202265961cdcde8375c4ee69399cd9e9805e1ede',
}
response = session.post(url,data=data) #传入form-data表单
return response.text #返回源码 def save_github(response_text):
with open('github.html','w',encoding='utf-8') as fp:
fp.write(response_text) if __name__ == '__main__':
token = token() #获取authenticity_token参数
response_text = url_session(token) #获取网页源码
save_github(response_text) #把爬取到的源码保存为html格式

python day2-爬虫实现github登录的更多相关文章

  1. 利用Python模拟GitHub登录

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

  2. Python爬虫之模拟登录微信wechat

    不知何时,微信已经成为我们不可缺少的一部分了,我们的社交圈.关注的新闻或是公众号.还有个人信息或是隐私都被绑定在了一起.既然它这么重要,如果我们可以利用爬虫模拟登录,是不是就意味着我们可以获取这些信息 ...

  3. Python爬虫-百度模拟登录(二)

    上一篇-Python爬虫-百度模拟登录(一) 接上一篇的继续 参数 codestring codestring jxG9506c1811b44e2fd0220153643013f7e6b1898075 ...

  4. 第三百四十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别

    第三百四十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别 第一步.首先下载,大神者也的倒立文字验证码识别程序 下载地址:https://gith ...

  5. Python分布式爬虫抓取知乎用户信息并进行数据分析

    在以前的文章中,我写过一篇使用selenium来模拟登录知乎的文章,然后在很长一段时间里都没有然后了... 不过在最近,我突然觉得,既然已经模拟登录到了知乎了,为什么不继续玩玩呢?所以就创了一个项目, ...

  6. Python 网络爬虫干货总结

    Python 网络爬虫干货总结 爬取 对于爬取来说,我们需要学会使用不同的方法来应对不同情景下的数据抓取任务. 爬取的目标绝大多数情况下要么是网页,要么是 App,所以这里就分为这两个大类别来进行了介 ...

  7. Python分布式爬虫打造搜索引擎完整版-基于Scrapy、Redis、elasticsearch和django打造一个完整的搜索引擎网站

    Python分布式爬虫打造搜索引擎 基于Scrapy.Redis.elasticsearch和django打造一个完整的搜索引擎网站 https://github.com/mtianyan/Artic ...

  8. Python基础+爬虫基础

    Python基础+爬虫基础 一.python的安装: 1.建议安装Anaconda,会自己安装一些Python的类库以及自动的配置环境变量,比较方便. 二.基础介绍 1.什么是命名空间:x=1,1存在 ...

  9. python网络爬虫实战PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:vg1y python网络爬虫实战帮助读者学习Python并开发出符合自己要求的网络爬虫.网络爬虫,又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取互联网信息的程序或者脚 ...

随机推荐

  1. python中的时间模块

    废话不多说,看代码 import datetime,time import calendar #时间戳 t1 = time.time() print('当前时间戳是{}'.format(t1)) #格 ...

  2. js 获取select的值

    var t = document.getElementById("provid"); console.log(t.value); console.log(t.text); //未定 ...

  3. 关于:基于http协议大文件断点续传上传至web服务器

    关键部分 前端用file.slice()分块 前端用FileReader获取每一分块的md5值 后端用MultipartFile接受分块文件 后端用FileOutputStream拼装分块文件 话不多 ...

  4. ELK结合logback

    之前ELK的安装可以查看前面一篇博客 下面是我的logback的配置文件,通过logback的appender直接导入logstash <?xml version="1.0" ...

  5. window.location.href 兼容性问题 (ie 浏览器下设置失效)

    window.location.href 兼容性问题 (ie 下设置失效) window.location.href = "../index.html" (ie 浏览器失效) wi ...

  6. (62)通信协议之一protobuf

     Protobuf协议特点分析 KingKa.吴永聪 1.protobuf是什么? protobuf(Google Protocol Buffers)是Google提供的一个具有高效的协议数据交换格式 ...

  7. Mysql 获取成绩排序后的名次

    其实就是输出mysql的排序后的行号   RT:获取单个用户的成绩在所有用户成绩中的排名   可以分两步: 1.查出所有用户和他们的成绩排名 ) as rowNo from t_user, () ) ...

  8. Burpsuiet爆破

    burpsuite中intruder标签内attack type四种类型的用法和区别 2016年07月24日 18:13:26 xss_01 阅读数:9802更多 个人分类: burpsuite网络安 ...

  9. [LeetCode]-011-Container_With_Most_Water

    Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai).  ...

  10. collection集合整体结构图