关于校园论坛帖子的相关脚本

Posted 末初mochu7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于校园论坛帖子的相关脚本相关的知识,希望对你有一定的参考价值。

调用接口识别验证码登录获得会话,检测是否为置顶文章,如果为置顶、终止程序,如果不为置顶,反序列化上一次存储的文章ID对象,然后删除上一次的文章,重发文章,并且将这一次文章的ID对象序列化存储起来以备下一次删除文章使用。

import requests
import json
import datetime
import time
import ddddocr
import pickle

def GetAuthCode():
    ocr = ddddocr.DdddOcr()
    while True:
        timestamp = int(round(time.time() * 1000))
        authcode_url = 'http://bbs.jxusptpay.com/AheadBBS/authCode?timestamp=' + str(timestamp)
        resp = session.get(url=authcode_url)
        res = ocr.classification(resp.content)
        if len(res)==4 and res.isdigit():
            authcode = res
            break
    return authcode

def BbsLogin():
    authcode = GetAuthCode()
    login_url = "http://bbs.jxusptpay.com:80/AheadBBS/login"
    login_headers = "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0",
                     "Accept": "application/json, text/javascript, */*; q=0.01",
                     "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
                     "Accept-Encoding": "gzip, deflate", "X-Requested-With": "XMLHttpRequest",
                     "Content-Type": "multipart/form-data; boundary=---------------------------16809288341427122629986944614"
    login_data = "-----------------------------16809288341427122629986944614\\r\\n" \\
                 "Content-Disposition: form-data; name=\\"token\\"\\r\\n" \\
                 "\\r\\n" \\
                 "\\r\\n" \\
                 "-----------------------------16809288341427122629986944614\\r\\n" \\
                 "Content-Disposition: form-data; name=\\"userName\\"\\r\\n" \\
                 "\\r\\n学号\\r\\n" \\
                 "-----------------------------16809288341427122629986944614\\r\\n" \\
                 "Content-Disposition: form-data; name=\\"passWord\\"\\r\\n" \\
                 "\\r\\n密码\\r\\n" \\
                 "-----------------------------16809288341427122629986944614\\r\\n" \\
                 "Content-Disposition: form-data; name=\\"authCode\\"\\r\\n" \\
                 "\\r\\n\\r\\n" \\
                 "-----------------------------16809288341427122629986944614\\r\\n" \\
                 "Content-Disposition: form-data; name=\\"rememberMe\\"\\r\\n" \\
                 "\\r\\non\\r\\n" \\
                 "-----------------------------16809288341427122629986944614--\\r\\n".format(authcode)
    login_resp = session.post(url=login_url, headers=login_headers, data=login_data)
    login_resp_text = login_resp.text
    print(login_resp_text)
    login_resp_msg = json.loads(login_resp_text)['msg']
    if login_resp_msg != '操作成功':
        exit()

def IsTop():
    IsTop_res = False
    IsTop_url = "http://bbs.jxusptpay.com:80/AheadBBS/forum/page"
    IsTop_headers = "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0",
                     "Accept": "application/json, text/javascript, */*; q=0.01",
                     "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
                     "Accept-Encoding": "gzip, deflate", "X-Requested-With": "XMLHttpRequest",
                     "Content-Type": "multipart/form-data; boundary=---------------------------20290579884477568832630254930",
                     "Origin": "http://bbs.jxusptpay.com", "Connection": "close",
                     "Referer": "http://bbs.jxusptpay.com/AheadBBS/forum/1/all"
    IsTop_data = "-----------------------------20290579884477568832630254930\\r\\n" \\
                 "Content-Disposition: form-data; name=\\"page\\"\\r\\n" \\
                 "\\r\\n1\\r\\n" \\
                 "-----------------------------20290579884477568832630254930\\r\\n" \\
                 "Content-Disposition: form-data; name=\\"size\\"\\r\\n" \\
                 "\\r\\n15\\r\\n" \\
                 "-----------------------------20290579884477568832630254930\\r\\n" \\
                 "Content-Disposition: form-data; name=\\"blockId\\"\\r\\n" \\
                 "\\r\\n1\\r\\n" \\
                 "-----------------------------20290579884477568832630254930\\r\\n" \\
                 "Content-Disposition: form-data; name=\\"flag\\"\\r\\n" \\
                 "\\r\\nall\\r\\n" \\
                 "-----------------------------20290579884477568832630254930--\\r\\n"
    IsTop_resp = session.post(url=IsTop_url, headers=IsTop_headers, data=IsTop_data)
    author_id = json.loads(IsTop_resp.text)['data']['records'][0]['author']['id']
    TopicTitle = json.loads(IsTop_resp.text)['data']['records'][0]['topicTitle']
    if author_id == 9069 and 'Hack For Fun' in TopicTitle:# 检查置顶帖子是否为我发的帖子
        IsTop_res = True
    return IsTop_res

def CoverArticle():
    with open('Pickled_ArticleId', 'rb') as f_r:
        ArticleId = pickle.load(f_r)['ArticleId']
    cover_url = "http://bbs.jxusptpay.com:80/AheadBBS/topic/deleteTopic"
    cover_headers = "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0",
                     "Accept": "application/json, text/javascript, */*; q=0.01",
                     "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
                     "Accept-Encoding": "gzip, deflate", "X-Requested-With": "XMLHttpRequest",
                     "Content-Type": "multipart/form-data; boundary=---------------------------37687526140434614373731301627",
                     "Origin": "http://bbs.jxusptpay.com", "Connection": "close"
    cover_data = "-----------------------------37687526140434614373731301627\\r\\n" \\
                 "Content-Disposition: form-data; name=\\"topicId\\"\\r\\n" \\
                 "\\r\\n\\r\\n" \\
                 "-----------------------------37687526140434614373731301627\\r\\n" \\
                 "Content-Disposition: form-data; name=\\"userId\\"\\r\\n" \\
                 "\\r\\n9069\\r\\n" \\
                 "-----------------------------37687526140434614373731301627--\\r\\n".format(ArticleId)
    cover_resp = session.post(url=cover_url, headers=cover_headers, data=cover_data)
    print(cover_resp.text)

    post_url = "http://bbs.jxusptpay.com:80/AheadBBS/topic/issue"
    post_headers = "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0",
                     "Accept": "application/json, text/javascript, */*; q=0.01",
                     "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
                     "Accept-Encoding": "gzip, deflate", "X-Requested-With": "XMLHttpRequest",
                     "Content-Type": "multipart/form-data; boundary=---------------------------42572536836188666591267450352",
                     "Origin": "http://bbs.jxusptpay.com", "Connection": "close",
                     "Referer": "http://bbs.jxusptpay.com/AheadBBS/topic/create?blockInfoId=1"
    post_data = "-----------------------------42572536836188666591267450352\\r\\n" \\
                "Content-Disposition: form-data; name=\\"topicTitle\\"\\r\\n" \\
                "\\r\\n\\xe3\\x80\\x8e\\xe6\\xb1\\x9f\\xe8\\xbd\\xaf\\xe4\\xbf\\xa1\\xe5\\xae\\x89\\xe4\\xba\\xa4\\xe6\\xb5\\x81\\xe7\\xbe\\xa4\\xe3\\x80\\x8f Hack For Fun : )\\r\\n" \\
                "-----------------------------42572536836188666591267450352\\r\\n" \\
                "Content-Disposition: form-data; name=\\"blockId\\"\\r\\n" \\
                "\\r\\n1\\r\\n" \\
                "-----------------------------42572536836188666591267450352\\r\\n" \\
                "Content-Disposition: form-data; name=\\"topicContent\\"\\r\\n" \\
                "\\r\\n<p style=\\"text-align: center;\\"><img src=\\"[上传图片的地址]\\" alt=\\"\\" width=\\"1000\\" height=\\"563\\" /></p>\\r\\n<p style=\\"text-align: center;\\">\\xe6\\xb1\\x87\\xe8\\x81\\x9a\\xe6\\x9c\\xac\\xe7\\xa7\\x91\\xe4\\xb8\\x93\\xe7\\xa7\\x91\\xe5\\xa4\\x9a\\xe5\\xb1\\x8a\\xe4\\xbf\\xa1\\xe5\\xae\\x89\\xe5\\xad\\xa6\\xe5\\xad\\x90</p>\\r\\n" \\
                "<p style=\\"text-align: center;\\">\\xe6\\x96\\x87\\xe6\\x98\\x8e\\xe5\\x92\\x8c\\xe8\\xb0\\x90\\xe7\\x9a\\x84\\xe6\\xb8\\x97\\xe9\\x80\\x8f\\xe6\\xb5\\x8b\\xe8\\xaf\\x95\\xe3\\x80\\x81SRC\\xe6\\x8c\\x96\\xe6\\xb4\\x9e\\xe3\\x80\\x81CTF\\xe7\\xab\\x9e\\xe8\\xb5\\x9b\\xe7\\xad\\x89\\xe5\\xae\\x89\\xe5\\x85\\xa8\\xe6\\x8a\\x80\\xe6\\x9c\\xaf\\xe4\\xba\\xa4\\xe6\\xb5\\x81\\xe7\\xbe\\xa4</p>\\r\\n" \\
                "<p style=\\"text-align: center;\\"><strong>&lt;<span style=\\"color: #000000;\\">Happy Hacking</span>&gt;</strong></p>\\r\\n" \\
                "<p style=\\"text-align: center;\\"><img src=\\"[上传图片的地址]\\" alt=\\"\\" width=\\"467\\" height=\\"626\\" /></p>\\r\\n" \\
                "-----------------------------42572536836188666591267450352--\\r\\n"
    post_resp = session.post(url=post_url, headers=post_headers, data=post_data)
    data = 
    ArticleId = json.loads(post_resp.text)['data']
    data['ArticleId'] = ArticleId[ArticleId.find('/')+1:]
    with open('Pickled_ArticleId', 'wb') as f_w:
        pickle.dump(data, f_w)
    print(post_resp.text)

def FinalProcess():
    BbsLogin()
    IsTop_res = IsTop()
    if IsTop_res == True:
        exit('[+]: 当前帖子为校园综合论坛置顶帖子')
    else:
        CoverArticle()

if __name__ == "__main__":
    start_time = datetime.datetime.now()
    print('\\n[+] 脚本启动时间:'.format(start_time.strftime('%Y-%m-%d %H:%M:%S')))
    session = requests.session()
    FinalProcess()
    end_time = datetime.datetime.now()
    print('[+] 脚本运行时间: 秒\\n'.format((end_time-start_time).total_seconds()))

以上是关于关于校园论坛帖子的相关脚本的主要内容,如果未能解决你的问题,请参考以下文章

关于校园论坛帖子的相关脚本

关于校园通使用过程中的相关脚本

山东大学论坛的建立(世一大论坛)

山东大学论坛的建立(世一大论坛)

山东大学论坛的建立(世一大论坛)

山东大学论坛的建立(世一大论坛)