关于校园论坛帖子的相关脚本
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><<span style=\\"color: #000000;\\">Happy Hacking</span>></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()))
以上是关于关于校园论坛帖子的相关脚本的主要内容,如果未能解决你的问题,请参考以下文章