使用手机运行脚本提升效率 #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.
-
前言
没有服务器,只能使用电脑挂着脚本,还不敢休眠,那和打开浏览器使用油猴之类的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