session登录github

用session 获取token值,构建表单登录github


环境:

  • ubuntu 16.04
  • python 3.5.2
  • requests库和BeautifulSoup库

1、打开github登录页面,输入一个错的账号密码,发现表单数据为下面这样

这里写图片描述

也就是说我们需要post过去的数据为这样子的:

data = {
        'authenticity_token':"XXXX", # 一串不知道什么的值
        'commit':'Sign+in',
        'login':'1400720231',
        'password':'账号的密码',
        'utf8':'✓'
    }

观察登录页面的html找到这个值的出处:

这里写图片描述

2、所以思路是,先获取这个值,然后再把这个数据填充到data数据中,再去post登录

  获取这个token的值:
import requests
from bs4 import BeautifulSoup
url = 'https://github.com/session' 
s = requests.session()
res = s.get(url)
html = BeautifulSoup(res.text, 'html.parser')
token = html.find('input',{'name':'authenticity_token'})['value']  # 获取到token的值

  构建表单去post:

data = {
        'authenticity_token':token,
        'commit':'Sign+in',
        'login':'1400720231',
        'password':'自己的密码',
        'utf8':'✓'
    }

3、完整的过程:

# coding:utf-8
import requests
from bs4 import BeautifulSoup
url = 'https://github.com/session' 
s = requests.session()
res = s.get(url)
html = BeautifulSoup(res.text, 'html.parser')
token = html.find('input',{'name':'authenticity_token'})['value'] # 获取token值
login_url = 'https://github.com/session'

# 构建data表单
data = {
        'authenticity_token':token,  # 在这里赋值
        'commit':'Sign+in',
        'login':'1400720231',
        'password':'自己的密码',
        'utf8':'✓'
    }

res2 = s.post(login_url, data=data)  # 拿着表单书数据去post
a = BeautifulSoup(res2.text,'html.parser')
res2 = s.post(login_url, data=data)
a = BeautifulSoup(res2.text,'html.parser')
for i in a.find_all('span',{'class':'text-bold repo'}):  #匹配我的仓库名字
    print(i.string)
#结果:
# Django-Projects
# Python-Spider
# ArticleSpider
# Python_Codes

\4、结果对比:

这里写图片描述


1. 本人是Python小白,如有记录错误的地方欢迎指正,不喜勿喷,一起进步,一起学习。

2、代码地址:https://github.com/1400720231/Python-Spider/tree/master/session_post_github

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值