使用手机运行脚本提升效率 #372
Replies: 3 comments 1 reply
-
关于在安卓系统上运行,我尝试了使用更为便捷的方式。概述使用kivy,Buildozer,python-for-android 构建安卓App 详细信息测试所用的简易代码见文末
为了能够正常访问网络 之后按照官方文档所述进行打包app,最终得到了正确的结果,模拟器打开app页面显示“login success” 补充这个构建的过程非常考验耐心,安卓的调试也比较困难,我在上述测试中只是测试了简单的用例,相关库也只是使用了 其他的库(诸如 采用这种方案需要对代码进行一次不小的更新,此外还需要kivy的相关知识来构建图形化界面。 另一种可能的方式为采用构建 WebView 应用的形式。 官方代码库已经支持了 # main.py
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.scrollview import ScrollView
from kivy.uix.boxlayout import BoxLayout
from kivy.core.window import Window
import requests
import base64
import pyaes
class gc:
AESKey = "u2oh6Vu^HWe4_AES"
HEADERS = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
"Sec-Ch-Ua": '"Chromium";v="118", "Google Chrome";v="118", "Not=A?Brand";v="99"'
}
COOKIES_PATH = "cookies.txt"
VIDEO_HEADERS = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
"Referer": "https://mooc1.chaoxing.com/ananas/modules/video/index.html?v=2023-1110-1610",
"Host": "mooc1.chaoxing.com"
}
AUDIO_HEADERS = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
"Referer": "https://mooc1.chaoxing.com/ananas/modules/audio/index_new.html?v=2023-0428-1705",
"Host": "mooc1.chaoxing.com"
}
THRESHOLD = 3
def pkcs7_unpadding(string):
return string[0:-ord(string[-1])]
def pkcs7_padding(s, block_size=16):
bs = block_size
return s + (bs - len(s) % bs) * chr(bs - len(s) % bs).encode()
def split_to_data_blocks(byte_str, block_size=16):
length = len(byte_str)
j, y = divmod(length, block_size)
blocks = []
shenyu = j * block_size
for i in range(j):
start = i * block_size
end = (i + 1) * block_size
blocks.append(byte_str[start:end])
stext = byte_str[shenyu:]
if stext:
blocks.append(stext)
return blocks
class AESCipher():
def __init__(self):
self.key = str(gc.AESKey).encode("utf8")
self.iv = str(gc.AESKey).encode("utf8")
def encrypt(self, plaintext: str):
ciphertext = b''
cbc = pyaes.AESModeOfOperationCBC(self.key, self.iv)
plaintext = plaintext.encode('utf-8')
blocks = split_to_data_blocks(pkcs7_padding(plaintext))
for b in blocks:
ciphertext = ciphertext + cbc.encrypt(b)
base64_text = base64.b64encode(ciphertext).decode("utf8")
return base64_text
class Account:
username = None
password = None
last_login = None
isSuccess = None
def __init__(self, _username, _password):
self.username = _username
self.password = _password
class Chaoxing:
def __init__(self, account: Account = None):
self.account = account
self.cipher = AESCipher()
def login(self):
_session = requests.session()
_session.verify = False
_url = "https://passport2.chaoxing.com/fanyalogin"
_data = {"fid": "-1",
"uname": self.cipher.encrypt(self.account.username),
"password": self.cipher.encrypt(self.account.password),
"refer": "https%3A%2F%2Fi.chaoxing.com",
"t": True,
"forbidotherlogin": 0,
"validate": "",
"doubleFactorLogin": 0,
"independentId": 0
}
try:
resp = _session.post(_url, headers=gc.HEADERS, data=_data)
if resp and resp.json()["status"] == True:
# save_cookies(_session)
return "login success"
else:
return "login failed"
except Exception as e:
return f"login failed: {e}"
# class MyApp(App):
# def build(self):
#
# return Label(text=result)
class MyApp(App):
def build(self):
# 创建一个 BoxLayout
layout = BoxLayout(orientation='vertical')
# 创建一个 ScrollView
scroll_view = ScrollView(size_hint=(1, None), size=(Window.width, Window.height))
account = Account("账户名", "密码")
chaoxing = Chaoxing(account=account)
result = chaoxing.login()
label = Label(text=result, size_hint_y=None)
label.bind(texture_size=label.setter('size'))
# 将 Label 添加到 ScrollView 中
scroll_view.add_widget(label)
# 将 ScrollView 添加到布局中
layout.add_widget(scroll_view)
return layout
if __name__ == "__main__":
MyApp().run() |
Beta Was this translation helpful? Give feedback.
-
|
完成设想,前来还愿 |
Beta Was this translation helpful? Give feedback.
-
|
@sz134055 已经开放了项目的WIKI页,如果可以的话,可以把这个方法作为项目文档放在wiki页里 |
Beta Was this translation helpful? Give feedback.

Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
前言
没有服务器,只能使用电脑挂着脚本,还不敢休眠,那和打开浏览器使用油猴之类的JS脚本刷有什么区别呢?
脚本是使用Python编写的,因此理论上只需要一个可用的Python环境即可,具体设备是什么无所谓。
在手机上配置Python环境,个人使用过的有以下两个安卓App:
iOS上也有类似的App,如iSH,可以根据下面的内容参考自行配置
使用Termux
下载App
因为就只是想刷个课,所以配置起来越简单越好。这里推荐Termux,无需Root,可直接配置Python环境。
前往官方仓库Releases下载:Releases-termux/termux-app
注意:Google Play商店上的版本似乎已经放弃了,请去官方仓库Releases下载。
配置基本环境
首先为Termux换个源,加快后续涉及下载操作的速度。
打开后输入:
回车后出来的界面直接回车继续:
在第二个界面,使用下面的箭头往下选择Mirrors in Chinese Mainland,然后 按空格 选中,你会发现前面的星号*已经选中了,这时候就可以回车生效了。
现在来安装一下需要的软件包,输入以下指令回车等待完成即可:
拉取仓库
使用指令拉取以下仓库:
然后
cd chaoxing进入脚本的根目录,准备配置Python环境以及刷课配置。Python环境配置
脚本的运行需要Python3.10
使用指令来安装一下Python3.10:
等待安装完后,你就可以使用
python3.10 -V来检查是否安装成功了。安装完成之后,要使用python需要打
python3.10,使用对应的pip要打python3.10 -m pip,可以进行一下额外的配置这时候就可以直接用
python和pip了换下pip的源,这里使用的是清华源:
pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple现在确保在
chaoxing的目录下,使用以下指令来装下脚本运行所需的依赖,回车等待安装完成即可:配置并运行
恭喜,环境已经配置完毕,你可以根据脚本的使用说明来配置一些启动配置来刷课了,例如要登录的账号,要用的题库等。
什么?你不会改?自行搜索下
nano的使用办法,或者想办法将配置好的config.ini文件导入吧,当然你直接使用也是可以的。Beta Was this translation helpful? Give feedback.
All reactions