python requests 简单实现易班登录,自动点赞,评论,发表

小编能力有限,本文纯属瞎编,如有雷同,你去打辅导员涩

一.前戏

    有个操蛋,操蛋,操蛋的辅导员促使小编成长,原因:易班需要活跃度,辅导员安排班上每个人必须去易班上 写文章,写评论,发投票...  我觉得辅导员肯定小瞧我们了,我们班像好好刷易班的人嘛。

    结果就鸡儿了涩,都没去发。直接导致辅导员强行安排(早上6.50格老子全班跑操,跑到易班活跃度足够为止!!!), 不要问我那个学校的,厂长也不是我表哥

二.话不多说,上码

 模块:requests,re, rsa,pycryptodemo,base64,json, jsonpath 

import requests
import re
import rsa
import time
from Crypto.PublicKey import RSA
import base64
import json
import jsonpath

person = requests.Session()
cookies = person.cookies.get_dict() # cookies
person.headers = {
"Accept": "application/json, text/javascript, */*; q=0.01",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-CN,zh;q=0.9",
"Connection": "keep-alive",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
# "Host": "q.yiban.cn",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"
}
user = "你自己的"
password = "你自己的"


# 登录易班
def login(user, password):
login_page_url = "https://www.yiban.cn/login"
login_page_res = person.get(url=login_page_url)
# print(login_page_res.text)
# 获取公钥并加密
public_key = re.findall(r"BEGIN PUBLIC KEY-----\sM(.*)-----END PUBLIC KEY", login_page_res.text, re.S)[0]
public_key = '-----BEGIN PUBLIC KEY-----\nM' + public_key + '-----END PUBLIC KEY-----'
print(public_key)
rsa_key = RSA.importKey(public_key)
x = rsa.encrypt(password.encode(), rsa_key)
rsa_pass = base64.b64encode(x).decode()
print(rsa_pass)
# 获取时间戳
keys_time = re.findall(r"data-keys-time='(.*?)'", login_page_res.text)[0]
print(keys_time)
check_in = captcha()
# random = time.time()
# random = round(random, 2) # 只取两位小数

# 登录易班
login_url = "https://www.yiban.cn/login/doLoginAjax"
login_data = {
"account": user,
"password": rsa_pass,
"captcha": check_in,
"keysTime": keys_time
}

login_res = person.post(url=login_url, data=login_data, cookies=cookies)
print('登录结果')
print(login_res)

# 获取登录结果
getlogin_url = "http://www.yiban.cn/ajax/my/getLogin"
getlogin_data = {
"": ""
}
getlogin_res = person.post(url=getlogin_url, data=getlogin_data)
print(getlogin_res)
getlogin_res_content = getlogin_res.json()
print(getlogin_res_content)
# messages = person.post(url='http://www.yiban.cn/forum/article/listAjax',data=login_data)
# print(messages.text)


def captcha(): # 图片验证码
captcha_check_url = "https://www.yiban.cn/captcha/index?Tue%20Dec%2004%202018%2000:01:2" \
"6%20GMT+0800%20(%E4%B8%AD%E5%9B%BD%E6%A0%87%E5%87%86%E6%97%B6%E9%97%B4)"
captcha_check_respond = person.get(url=captcha_check_url)
print(captcha_check_respond)
captcha_content = captcha_check_respond.content # 转换类型
fb = open('captcha.jpg', 'wb') # 把字节类型转换为图片文件
fb.write(captcha_content)
fb.close()
check_in = input("请输入图片验证码>>>:")
return check_in


def get_article_id(): # 获取文章id
json_data_list = {
"channel_id": 281421,
"puid": 7245623,
"page": 1,
"size": 10,
"orderby": "updateTime",
"Sections_id": -1,
"need_notice": 0,
"group_id": 457740,
"my": 0,
# "lastId": 76305563
}
res = person.post(url="http://www.yiban.cn/forum/article/listAjax", data=json_data_list)
# 获取json数据
json_list0 = res.json()
# 数据筛选
article_list = jsonpath.jsonpath(json_list0, '$..id')
# jsonpath文档https://www.cnblogs.com/aoyihuashao/p/8665873.html
# print(json_list0)

return article_list


def good(): # 点赞
article_id = get_article_id()
for i in range(0, 20, 2):
print(article_id[i])
article_data = {
"article_id": article_id[i],
"channel_id": 281421,
"puid": 7245623
}
good_res = person.post(url="http://www.yiban.cn/forum/article/upArticleAjax", data=article_data, headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Language': 'zh-CN,zh;q=0.9',
})
print(good_res)


def comment(): # 评论
article_id = get_article_id()
for i in range(0, 20, 2):
print(article_id[i])
article_data = {
"channel_id": 281421,
"puid": 7245623,
"article_id": article_id[i],
"content": "i'm robot",
"reply_id": 0,
"syncFeed": 1,
"isAnonymous": 0
}
good_res = person.post(url="http://www.yiban.cn/forum/reply/addAjax", data=article_data, cookies=cookies,
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Language': 'zh-CN,zh;q=0.9',
})
print(good_res)


def change_page(aid, func): # 翻页
for i in range(0, 20):
json_data_list = {
"channel_id": 281421,
"puid": 7245623,
"page": i,
"size": 10,
"orderby": "updateTime",
"Sections_id": -1,
"need_notice": 0,
"group_id": 457740,
"my": 0,
"lastId": 76287511
}
res = person.post(url="http://www.yiban.cn/forum/article/listAjax", data=json_data_list)
# 获取json数据
json_list0 = res.json()
# 数据筛选
article_list = jsonpath.jsonpath(json_list0, '$..id')
# jsonpath文档https://www.cnblogs.com/aoyihuashao/p/8665873.html
print(json_list0)


def article_add():
article_data = {
"puid": 7245623,
"pubArea": 457740,
"title": "test",
"content": "<p>this is robot auto article!!!!!</p>",
"isNotice": "false",
"dom": ".js-submit"
}
article_data_res = person.post(url="http://www.yiban.cn/forum/article/addAjax", data=article_data, headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Language': 'zh-CN,zh;q=0.9',
}
)
print(article_data_res)


def vote(): # 投票
vote_data = {
"puid": 7245623,
"scope_ids": 457740,
"title": "title",
"subjectTxt": None,
"subjectPic": None,
"options_num": 3,
"scopeMin": 1,
"scopeMax": 1,
"minimum": 1,
"voteValue": "2019-05-21 13:15",
"voteKey": 2,
"public_type": 0,
"isAnonymous": 1,
"voteIsCaptcha": 0,
"istop": 1,
"sysnotice": 2,
"isshare": 1,
"rsa": 1,
"dom": " .js-submit",
"group_id": 457740,
"subjectTxt_1": "vote1--",
"subjectTxt_2": "vote2",
"subjectTxt_3": "vote3"
}
vote_data_res = person.post(url="http://www.yiban.cn/vote/vote/add", data=vote_data)
print(vote_data_res)


if __name__ == '__main__':
login(user, password)
for i in range(0, 20):
article_add()
good()
# for i in range(1, 5):
# vote()
# time.sleep(1)

注:未完待续...


ps:如果你看到这儿了,说明你已经入土了

猜你喜欢

转载自www.cnblogs.com/jum-bolg/p/10792853.html