对RoboMaster论坛自动签到脚本制作(虽然无卵用)

RoboMaster论坛自动签到,自动浏览刷分

不务正业系列

上完最后一节课,队长跟我们说,RM有个BBS,可以看看,但是下载要金币,这个金币只能做签到等事情才能得到,所以我用python做了一个小程序搞事,自动签到。

FLAG:写完这篇就去复习大物

rmlogo

效果图:

签到功能:

浏览刷分功能:

正题

网上流行的自动签到主要有两种,一种是用类似浏览器的插件,让浏览器后台模拟鼠标点击,它的局限是换了电脑就不好用了,要装一大堆东西,但对网站兼容性好。
另一种是直接发数据包,浏览器与服务器的通讯都是采用数据包的形式,不妨直接发数据包,比较方便,但是对一些安全性高的网站不好用。

我用的是第二种。网上教程极少。

流程

安装Fiddler

这是一个网络分析软件,用于截取数据包,估计wireshark也能干。网上安装教程一大堆。

人工登陆找正常数据包

这个就是正常登陆数据包,username是账号,password是密码的MD5加密结果(小写)

数据包内容

数据包头header:

部分代码

主要思路,删掉了一些敏感信息,请自行添加

数据包生成
模块
import urllib.request
import urllib
import gzip
import http.cookiejar
import re
函数
#定义一个方法用于生成请求头信息,处理cookie
def getOpener(head):
    # deal with the Cookies
    # <pre name="code" class="python"> 
    cj = http.cookiejar.CookieJar()
    pro = urllib.request.HTTPCookieProcessor(cj)
    opener = urllib.request.build_opener(pro)
    header = []
    for key, value in head.items():
        elem = (key, value)
        header.append(elem)
    opener.addheaders = header
    return opener
 
#定义一个方法来解压返回信息
def ungzip(data):
    try:        # 尝试解压
        print('正在解压.....')
        data = str(gzip.decompress(data),'UTF-8')
        data = re.sub("[A-Za-z0-9\!\%\[\]\,\。\<\=\"\/\>\#\:\;\'\(\)\_\-\$\@\?\.\+\=\*\%\&\|\{\}\' '\\n]", "", data)
       
        print('解压完毕!')
    except:
        print('未经压缩, 无需解压')
    
    return data
    
#封装头信息,伪装成浏览器,注意每个功能的header都不一样

#Cookie1 = 
省略
header = {
省略
}

header1 = {#签到
省略
}
#退出
header2 = {
省略
}
header3 ={#浏览主页
省略
    }
    username = 'xxxxxxx'#你的用户名
password = 'xxxxxxxxxx'#你的密码的MD5加密后,(小写字母)
postDict = {
        'formhash':'00000129',
        'referer':'https://bbs.robomaster.com/portal.php',
        'username': username,
        'password': password,
        'questionid':'0',
        'answer':''
}
sign_url= 'https://bbs.robomaster.com/misc.php?mod=supply&op=sign'
login_url = 'https://bbs.robomaster.com/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=Louwq&inajax=1'
logout_url='https://bbs.robomaster.com/member.php?mod=logging&action=logout'
    def login(header,login_url,postDict):
    print('开始登录')
    opener = getOpener(header)
    postData = urllib.parse.urlencode(postDict).encode()
    op = opener.open(login_url, postData)
    print("msg: "+ op.msg)
    #print("status:"+op.status + "msg"+ op.msg)
    data = op.read()
    data = ungzip(data)
    print(data)
    print('登陆成功')
def sign(header,sign_url):
    print('开始签到')
    opener = getOpener(header)
    op = opener.open(sign_url)
    data = op.read()
    print("msg: "+ op.msg)
    data = ungzip(data)
    print(data)
    print('签到成功')

def logout(header,logout_url):
    print('开始退出')
    opener = getOpener(header)
    op = opener.open(logout_url)
    data = op.read()
    data = ungzip(data)
    print(data)
    print("msg: "+ op.msg)
    print('退出成功')

猜你喜欢

转载自www.cnblogs.com/qhlai/p/12311198.html
今日推荐