捣鼓捣鼓腾讯开发者实验室(下)——脚本开启云服务器

Posted 水泡泡(kking)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了捣鼓捣鼓腾讯开发者实验室(下)——脚本开启云服务器相关的知识,希望对你有一定的参考价值。

0x0、前言

在上篇文章《捣鼓捣鼓腾讯开发者实验室》中,笔者简要分析了一下腾讯开发者实验室,在文章的最后我们提到了可以用脚本来开启服务器,但是没有上传脚本代码。也是因为其他原因没有写,今天有空就又去捣鼓了一下,补了个小脚本,自己玩玩还是挺不错的。

0x1、脚本开启云服务器(cvmmanage)

由于上一篇文章已经分析过了抓包过程,所以这里就不再说了。Talk is cheap,show me the code

脚本代码:

  1 # -*- coding:utf-8 -*- 
  2 # @Date: 2017/08/10 21:54
  3 # @Author: r00tuser
  4 # @Blog: http://cnblogs.com/r00tuser/
  5 """
  6    针对腾讯开发者实验室的脚本,通过脚本获取服务器的用户名和密码。
  7    方便有需要的时候开启服务器,搭建环境。
  8 """
  9 import requests
 10 import json
 11 import random
 12 
 13 
 14 #腾讯开发者实验室的所有实验ID 53个
 15 #以后可以用爬虫来获取所有ID
 16 LABSID = [
 17     \'10125\',\'10000\',\'10004\',\'10196\',\'10030\',\'10102\',\'10001\',\'10122\',\'10002\',\'10123\',
 18     \'10201\',\'10003\',\'10093\',\'10134\',\'10171\',\'10187\',\'10191\',\'10193\',\'10212\',\'10045\',
 19     \'10192\',\'10040\',\'10054\',\'10096\',\'10098\',\'10026\',\'10029\',\'10108\',\'10120\',\'10036\',
 20     \'10188\',\'10094\',\'10035\',\'10190\',\'10195\',\'10197\',\'10084\',\'10087\',\'10100\',\'10101\',
 21     \'10078\',\'10081\',\'10157\',\'10068\',\'10172\',\'10079\',\'10080\',\'10070\',\'10071\',\'10072\',
 22     \'10075\',\'10178\',\'10181\'
 23 ]
 24 # 45分钟
 25 labsIdLow = [
 26     \'10000\',\'10196\',\'10030\',\'10102\',\'10001\',\'10122\',\'10002\',\'10123\',\'10003\',\'10093\',
 27     \'10134\',\'10045\',\'10192\',\'10040\',\'10054\',\'10096\',\'10098\',\'10026\',\'10029\',\'10108\',
 28     \'10120\',\'10036\',\'10188\',\'10094\',\'10035\',\'10084\',\'10087\',\'10100\',\'10101\',\'10068\',
 29 ]
 30 # 1小时
 31 labsIdMiddle = [
 32     \'10190\',\'10195\',\'10197\',\'10078\',\'10081\',\'10157\',\'10172\',\'10079\',\'10080\',\'10070\',\'10071\',
 33     \'10072\',\'10075\',\'10178\',\'10181\'
 34 ]
 35 # 3小时
 36 labsIdHigh = [
 37     \'10004\',\'10125\',\'10191\',\'10193\',\'10212\',\'10201\'
 38 ]
 39 
 40 
 41 #cookies
 42 cookies = {
 43     \'Cookie\':\'YourCookies\'
 44 }
 45 #开启服务器
 46 #labid 实验ID
 47 def startCvm(labid):
 48     startCvmUrl = \'https://www.qcloud.com/developer/labs/ajax/?uin=YourQQNumber&csrfCode=1023972191\'
 49     startCvmData = {"action": "receiveResource", "id":labid}
 50     headers = {
 51         \'Connection\':\'close\',
 52         \'Content-Length\': 39,
 53         \'Accept\':\'*/*\',
 54         \'Origin\':\'https://www.qcloud.com\',
 55         \'X-Requested-With\':\' XMLHttpRequest\',
 56         \'User-Agent\': \'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/59.0.3071.115 Safari/537.36\',
 57         \'Content-Type\': \'application/json; charset=UTF-8\',
 58         \'Referer\': \'https://www.qcloud.com/developer/labs/lab/10126\',
 59         \'Accept-Encoding\': \'gzip, deflate, br\',
 60         \'Accept-Language\': \'zh-CN,zh;q=0.8\'
 61     }
 62     response = requests.post(startCvmUrl,data=json.dumps(startCvmData),headers=headers,cookies=cookies)
 63     result = response.json()
 64     if result[\'code\']!=\'10002\' and result[\'msg\']==\'ok\':
 65         print \'Start the cvm with labid: %s\' % str(labid)
 66         return True
 67     elif result[\'msg\'] == \'not allowed repeat receive\':
 68         print \'Have started the cvm with labid: %s\' % str(labid)
 69     else:
 70         print \'Start the cvm with labid:%s\' % str(labid) +" fail,reason: "+result[\'msg\']
 71 
 72 
 73 #获取服务器地址,用户名和密码
 74 def getAccountPass(labid):
 75     url = \'https://www.qcloud.com/developer/labs/ajax/?action=EnterRoom&uin=YourQQNumber&csrfCode=1023972191\'
 76     postdata = {\'labId\':labid}
 77     headers = {
 78         \'Connection\': \'close\',
 79         \'Content-Length\': 11,
 80         \'Accept\': \'*/*\',
 81         \'Origin\': \'https://www.qcloud.com\',
 82         \'X-Requested-With\': \' XMLHttpRequest\',
 83         \'User-Agent\': \'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36\',
 84         \'Content-Type\': \'application/json; charset=UTF-8\',
 85         \'Referer\': \'https://www.qcloud.com/developer/labs/lab/10125/console\',
 86         \'Accept-Encoding\': \'gzip, deflate, br\',
 87         \'Accept-Language\': \'zh-CN,zh;q=0.8\'
 88     }
 89     response = requests.post(url,data=json.dumps(postdata),headers=headers,cookies=cookies)
 90     result = response.json()
 91     try:
 92         print \'OS: \'+result[\'data\'][\'lab\'][\'resourceConfig\'][\'cvm\'][\'osName\']+\\
 93               "\\nIP: "+result[\'data\'][\'experiment\'][\'cvm\'][\'host\']+\\
 94               "\\nusername: "+result[\'data\'][\'experiment\'][\'cvm\'][\'username\']+\\
 95               "\\npassword: "+result[\'data\'][\'experiment\'][\'cvm\'][\'password\']
 96     except:
 97         print "Can\'t get the cvm information,Possible the cvm didn\'t start!"
 98 
 99 def cvmManage(labid):
100     labid = int(labid)
101     startCvm(labid)
102     getAccountPass(labid)
103 
104 
105 if __name__ == \'__main__\':
106     choice = raw_input("You have two choice to start a cvm:1,SpecialLabsId;2,TimeSelect;3.random;(default 3)")
107     if choice == \'\':
108         choice = 3
109     #choice 1 第一种选择,直接输入特定的labid
110     if choice == \'1\':
111         labId = raw_input(\'Please select a labsid in the list:\'+LABSID.__str__())
112         if labId in LABSID:
113             cvmManage(labId)
114     #choice 2 第二种选择,通过时间的长短来选择,low=45分钟,middle=1小时,high=3小时
115     elif choice == \'2\':
116         timeMode = raw_input(\'Select a time mode(1,Low;2,Middle;3,High)\')
117         templist = []
118         if timeMode==\'1\':
119             templist = labsIdLow
120         elif timeMode==\'2\':
121             templist = labsIdMiddle
122         elif timeMode == \'3\':
123             templist = labsIdHigh
124         labId = raw_input(\'Please select a labsid in the list:\'+templist.__str__())
125         if labId in templist:
126             cvmManage(labId)
127     # choice 3 第三种选择,随机开启
128     elif choice ==\'3\':
129         labId = random.choice(LABSID)
130         cvmManage(labId)

代码里面有了部分注释,代码很简单。

代码其中有两个地方需要修改:

1,YourCookies,即是你登录腾讯云的cookie。

2,YourQQNumber,即是你登录腾讯云用的QQ号。

QQ号码好办,那么cookie怎么获取呢?很简单。我们以chrome为例:

正常登录之后,右键检查,选择Network选项,选择"www.qcloud.com",点进去,cookie处那一长串就是了。

复制下来直接粘贴在代码YourCookies处即可,还有别忘记修改YourQQNumber。

贴一下程序运行的截图:

拿到用户名密码的我们,就可以愉快地用我们喜欢的工具连上cvm了。

还有一个是无意中发现的,倘若不手动结束云实验室,可以在原本的使用时间基础上大概再使用半个小时左右。大概是因为腾讯对已经到点的服务器没有立即回收,还需要排队或者说处理导致的。

0x2、最后

Have fun !

 

以上是关于捣鼓捣鼓腾讯开发者实验室(下)——脚本开启云服务器的主要内容,如果未能解决你的问题,请参考以下文章

看我如何用云函数实现一个PC小程序代码包在线解密工具

Oracle使用批处理BAT脚本启动或关闭Oracle服务

Oracle使用批处理BAT脚本启动或关闭Oracle服务

搏一搏 单车变摩托,是时候捣鼓一下家中的小米电视机啦。

不务正业,捣鼓了一个破网站,全过程记录

不务正业,捣鼓了一个破网站,全过程记录