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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 三星微单镜头盖怎么办 大胸走路容易抖怎么办 哎呦该怎么办是什么歌 老婆想爆我菊花怎么办 衣服泡了一晚上怎么办? 来大姨妈了该怎么办 耳机戴不住总掉怎么办 眼睛被辣椒辣了怎么办 电信光猫复位后怎么办 电信光猫重置了怎么办 u盘无法安全弹出怎么办 u盘不能安全弹出怎么办 真空杯不保温了怎么办 锅底外面烧黑了怎么办 锅底里面烧黑了怎么办 佳能50镜头跑焦怎么办 g7x镜头进灰了怎么办 leica镜头进灰了怎么办 请问喉咙痒咳嗽该怎么办 喉咙痒咳嗽有痰怎么办 痒咳嗽停不下来怎么办 嗓子疼咳嗽有痰怎么办 上火了喉咙干痒怎么办 喉咙里总是有痰怎么办 1岁宝宝喉咙有痰怎么办 嗓子总感觉有痰怎么办 嗓子痒感觉有痰怎么办 1岁宝宝嗓子有痰怎么办 3岁宝宝嗓子有痰怎么办 喉咙总感觉有痰怎么办 感冒了喉咙有痰怎么办 咽喉有异物感是怎么办 老感觉喉咙有痰怎么办 感冒有痰怎么办最有效 感冒快好了有痰怎么办 喉咙里一直有痰怎么办 一到晚上就咳嗽怎么办 1岁宝宝咳嗽痰多怎么办 3岁宝宝咳嗽痰多怎么办 六岁儿童咳嗽有痰怎么办 很多白痰在喉咙怎么办