paython爬取github登录页面token信息并登录github
来源:互联网 发布:shopee数据分析助手 编辑:程序博客网 时间:2024/05/01 05:44
1.语言:
Python3.5
2.用到的库:
requests
re(正则)
3.流程:
手动登录查看需要的参数,观察一次登录发送的请求
登录过程如下:
***** *** *发现除了一个token是动态的,其他的都是输入或是固定的。
页面查找token:
参数如下:
'login':'。。。',
'password':'。。。',
'authenticity_token':token,
'commit':'Sign in',
'utf8': "✓"}
*****
***
*
用正则在登录页面爬取登录用的token,并赋值到参数里
*****
***
*
接着用会话对象去发送带有参数的数据到url
*****
***
*
完成
4.代码:
# -*- coding:utf-8 -*-import requestsimport re'''用到的库:requestsre(正则)流程:手动登录查看需要的参数,观察一次登录发送的请求 ***** *** *发现除了一个token是动态的,其他的都是输入或是固定的。参数如下:'login':'。。。','password':'。。。','authenticity_token':token,'commit':'Sign in','utf8': "✓"} ***** *** *用正则在登录页面爬取登录用的token,并赋值到参数里 ***** *** *接着用会话对象去发送带有参数的数据到url ***** *** * 完成'''s = requests.Session()#获取会话对象,用于登录时的cookie和sessionheader = {'Host': 'github.com', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:47.0) Gecko/20100101 Firefox/47.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'en-US,en;q=0.5', 'Accept-Encoding': 'gzip, deflate, br', 'Referer': 'https://github.com', 'Connection': 'keep-alive'}indexUrl = 'https://github.com/'#首页地址loginUrl = 'https://github.com/login'#登录页面sessionUrl = 'https://github.com/session'#登录页面把表单提交到这个url,然后重定向到首页,把数据提交到这个Url之后可以获取到cookie,用于登录##>>> payload = {'key1': 'value1', 'key2': 'value2'}##>>> r = requests.get("http://httpbin.org/get", params=payload)tokenRule = '<input name="authenticity_token" type="hidden" value="(.*?)"'#登录参数里面有一个token参数,是加载到页面中并且是动态的,需要爬出来loginHtml = s.get(loginUrl,headers=header)#得到登录页面tokenPattern = re.compile(tokenRule,re.S)arraryTolen = re.findall(tokenPattern,loginHtml.text)#得到动态的token,这里返回的事数组,取第一个#print(loginHtml.text)token = arraryTolen[0]print("the token is: ",token)loginParams = {'login':'*****', 'password':'******', 'authenticity_token':token, 'commit':'Sign in', 'utf8': "✓"}#配置登录参数sessionHtml = s.post(sessionUrl,data=loginParams)#得到登录后的页面,其实被定位到了首页'''输出是否登录成功,如果不成功返回状态码和原因,以及详细的错误页面'''print("the session rsult is: ",sessionHtml.status_code)print("the reason is: ",sessionHtml.reason)print("the detail is: ",sessionHtml.text)indexhtml = s.get('https://github.com/HanlaoTwo/StacknotOverFlow',headers=header)#可以继续用这个会话对象去访问需要登录的页面print(indexhtml.text)
5.源代码:
https://github.com/HanlaoTwo/StacknotOverFlow/blob/master/loginGit.py
0 0
- paython爬取github登录页面token信息并登录github
- python 登录并爬取淘宝信息
- HttpClient 登录爬取信息
- GitHub 登录失败
- Github第三方登录
- Github authenticator登录问题
- 如何支持github账号登录
- GitHub设置无密码登录
- hosts文件:github登录失败
- Mac github登录不上
- 解决github登录慢问题
- Python_模拟登录(爬取教务系统信息并制作查询界面)
- session保存/取登录信息
- [随笔]github for winidows 登录失败
- Android Studio->VersionControl GitHub无法登录
- django实现github第三方本地登录
- 搭建登录系统的github地址
- Github 第三方授权登录教程
- 设计模式(二)工厂方法模式+抽象工厂模式
- Mybatis中javaType和jdbcType对应和CRUD例子
- android studio 如何生成apk
- WordPress主题导航菜单制作的几种方法(一)
- c++将一串字符串转数字
- paython爬取github登录页面token信息并登录github
- 单元测试工具 CUnit
- leetcode-461-Hamming Distance
- 动力节点——继承(十二)
- 制作wordpress 导航栏
- 结构体
- bootstrapValidator插件使用
- Spring学习笔记-C4-面向切面的Spring
- python软件使用