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. bing 精美壁纸获取方式

    右键检查 打开就行了

  2. docker-compose简单使用

    1,下载安装docker-compose # http://get.daocloud.io/ curl -L https://get.daocloud.io/docker/compose/releas ...

  3. opencv加椒盐噪声

    void salt(IplImage *img, int saltNum) { int x,y; int i ; unsigned char *src = NULL; src = (unsigned ...

  4. mysql AVG()函数 语法

    mysql AVG()函数 语法 作用:AVG 函数返回数值列的平均值.NULL 值不包括在计算中.大理石模组 语法:SELECT AVG(column_name) FROM table_name m ...

  5. JPA学习(三、JPA_API)

    框架学习之JPA(三) JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中 ...

  6. select客户端模型封装——回调方式快速建立客户端

    SockClient.h #pragma once #include<functional> #define _WINDOWS #ifdef _WINDOWS #define _WINSO ...

  7. 编译高博十四讲代码遇到依赖项g2o和cholmod的坑

    1. 找不到g2o库!在CMakeLists.txt中使用指令 message(STATUS "${G2O_FOUND}") 打印结果为NO. 问题描述: CMakeLists.t ...

  8. 3-Gitblit服务器搭建及IDEA整合Git使用

    背景:虽然有GitHub.GitLab这样强大的Git仓库,但是涉及私有Git库要收费,所以自己动手搭建免费的用用 环境:windows 7 旗舰版.JDK 1.8.IDEA 2017 ------- ...

  9. json根据一个值返回对象,filter方法使用

    d = {   "student":[     {       "count":1000,       "stuList":[        ...

  10. AI-人工智能/机器学习 seetafaceJNI

    基于中科院seetaface2进行封装的JAVA人脸识别库,支持人脸识别.1:1比对.1:N比对. 项目介绍 基于中科院seetaface2进行封装的JAVA人脸识别算法库,支持人脸识别.1:1比对. ...