Python爬虫之用脚本登录Github并查看信息

前言分析目标网站的登录方式

**目标地址:**https://github.com/login

登录方式做出分析:

第一,用form表单方式提交信息,

第二,有csrf_token,

第三 ,是以post请求发送用户名和密码时,需要第一次get请求的cookie

第四,登录成功以后,请求其他页面是只需要带第一次登录成功以后返回的cookie就可以。

以get发送的请求获取我们想要的token和cookie

 

代码:

1import requests 2from bs4 import BeautifulSoup 3 4r1 = requests.get('https://github.com/login') 5 6soup = BeautifulSoup(r1.text,features='lxml') #生成soup 对象 7 8s1 = soup.find(name='input',attrs={'name':'authenticity_token'}).get('value') 9#查到我们要的token 10 11r1_cookies = r1.cookies.get_dict() # 下次提交用户名时用的cookie 12 13 14# print(r1_cookies) 15 16# print(s1) 17 18 19#结果:: 20 21{'logged_in': 'no', '_gh_sess': 'VDFWa2hJWjFMb1hpRUFLRDVhUmc3MXg1Tk02TDhsUnhDMERuNGpyT2Y4STlQZ2xCV1lCZEFhK21wdFR1bkpGYUV0WEJzcDEydWFzcm93aVc4Nk91Q2JicmtRV0NIQ0lRSWM4aFhrSVFYbCtCczBwdnhVN0YySVJJNUFpQnhyTzNuRkJwNDJZUWxUcEk2M2JkM3VSMDdXVHNOY1htQkthckJQZDJyUVR2RzBNUkU3VnltRVF2Um1admU3c3YzSGlyVnVZVm0ycnA1eUhET1JRVWNLN0pSbndKWjljMGttNG5URWJ1eU8rQjZXNEMxVEthcGVObDFBY2gvc2ZzWXcvWWZab29wQWJyU0l6cmZscWhBQUlzYTA3dTRtb3l1S0hDYytHY2V1SUhEWlZvVlZoSWZpTzBjNmlidFF2dzI2bWgtLTJON1lqbm5jWUtSYmtiVEM1clJPakE9PQ%3D%3D--897dbc36c123940c8eae5d86f276dead8318fd6c'} 22pRz0wapEbu5shksGCeSN0FijWoU9ALw8EPUsXlqgcw1Ezirl0VbSKvkTYqIe8VhxhPH2H/uzGaV6XX+yjTGoVA==

获取这两个值就可以,进行下一步发送登录请求:

第二步post方式提交用户名密码

代码::

1这个代码接着上面的get请求,只是post请求的部分, 2 3r2 = requests.post( 4 'https://github.com/session', 5 data ={ 6 'commit':'Sign in', 7 'utf8':'✓', 8 'authenticity_token':s1, 9 'login':'541756569@qq.com', 10 'password':'用户名密码' # 填上正确的用户名即可 11 }, 12 cookies = r1.cookies.get_dict(), # 这里需要第一次的cookie 13) 14 15print(r2.cookies.get_dict()) # 这个是成功以后的cookie

 成功以后就返回登录页面的信息。

基于post登录成功后查看个人详情页。

 这里只需要带着登录成功以后的cookie 就可以

1#完整代码 2 3 4import requests 5from bs4 import BeautifulSoup 6 7r1 = requests.get('https://github.com/login') 8 9soup = BeautifulSoup(r1.text,features='lxml') 10 11s1 = soup.find(name='input',attrs={'name':'authenticity_token'}).get('value') 12r1_cookies = r1.cookies.get_dict() 13print(r1_cookies) 14print(s1) 15 16 17r2 = requests.post( 18 'https://github.com/session', 19 data ={ 20 'commit':'Sign in', 21 'utf8':'✓', 22 'authenticity_token':s1, 23 'login':'541756569@qq.com', 24 'password':'密码' 25 }, 26 cookies = r1.cookies.get_dict(), 27) 28 29 30查看个人详情页 31 32 33print(r2.cookies.get_dict()) 34 35 r3 = requests.get( 36 'https://github.com/13131052183/product', #查看个人的详情页 37 cookies = r2.cookies.get_dict() 38 39 ) 40 41 print(r3.text)
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang