2025年9月9日星期二

恩山无线论坛任务脚本(2025年9月版)

1.购买服务器阿里云:服务器购买地址https://t.aliyun.com/U/DT4XYh若失效,可用地址

1.购买服务器

阿里云:

服务器购买地址

https://t.aliyun.com/U/DT4XYh

若失效,可用地址

https://www.aliyun.com/activity/wuying/dj?source=5176.29345612&userCode=49hts92d

腾讯云:

https://curl.qcloud.com/wJpWmSfU

若失效,可用地址

https://cloud.tencent.com/act/cps/redirect?redirect=2446&cps_key=ad201ee2ef3b771157f72ee5464b1fea&from=console

华为云

https://activity.huaweicloud.com/cps.html?fromacct=64b5cf7cc11b4840bb4ed2ea0b2f4468&utm_source=V1g3MDY4NTY=&utm_medium=cps&utm_campaign=201905

2.部署教程

2024年最新青龙面板跑脚本教程(一)持续更新中

3.代码如下

import requestsimport reimport osimport jsonimport timeimport loggingimport sysimport subprocessfrom typing import OptionalTuple
# 配置日志logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')logger = logging.getLogger(__name__)
class EnshanSign:    def __init__(self):        # 从环境变量获取配置        self.enshanck = os.getenv("enshanck")
        # 请求配置        self.headers = {            "User-Agent""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",            "Cookie": self.enshanck if self.enshanck else "",            "Referer""https://www.right.com.cn/FORUM/",            "Accept""text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",            "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, br",            "Connection""keep-alive",            "Upgrade-Insecure-Requests""1"        }
        # 请求会话        self.session = requests.Session()        self.session.headers.update(self.headers)
        # 最大重试次数        self.max_retries = 3        self.retry_delay = 5  # 重试延迟(秒)
    def check_config(self) -> bool:        """检查必要配置是否存在"""        if not self.enshanck:            logger.error("未找到恩山Cookie配置,请设置环境变量: enshanck")            return False        return True
    def get_enshan_info(self) -> Tuple[Optional[str], Optional[str]]:        """        获取恩山论坛的积分信息        Returns:            Tuple[coin, point]: 恩山币和积分        """        url = 'https://www.right.com.cn/FORUM/home.php?mod=spacecp&ac=credit&showcredit=1'
        for attempt in range(self.max_retries):            try:                response = self.session.get(url, timeout=10)                response.raise_for_status()  # 检查HTTP状态码
                # 使用更健壮的正则表达式匹配                coin_pattern = r'恩山币[^:]*:\s*</em>([^<&]+)'                point_pattern = r'积分[^:]*:\s*</em>([^<&]+)'
                coin_match = re.search(coin_pattern, response.text, re.IGNORECASE)                point_match = re.search(point_pattern, response.text, re.IGNORECASE)
                if coin_match and point_match:                    coin = coin_match.group(1).strip()                    point = point_match.group(1).strip()                    return coin, point                else:                    logger.warning(f"第{attempt+1}次尝试: 未找到积分信息,可能是页面结构变化或Cookie失效")
            except requests.exceptions.RequestException as e:                logger.error(f"第{attempt+1}次请求失败: {str(e)}")
            # 如果不是最后一次尝试,等待后重试            if attempt < self.max_retries - 1:                time.sleep(self.retry_delay)
        return NoneNone
    def send_notify(self, title: str, content: str):        """        使用青龙面板的notify.py发送通知        Args:            title: 通知标题            content: 通知内容        """        try:            # 查找notify.py文件路径            script_dir = os.path.dirname(os.path.abspath(__file__))            notify_py_path = os.path.join(script_dir, "notify.py")
            if not os.path.exists(notify_py_path):                # 尝试在上级目录查找                parent_dir = os.path.dirname(script_dir)                notify_py_path = os.path.join(parent_dir, "notify.py")
            if not os.path.exists(notify_py_path):                logger.warning("未找到notify.py文件,无法发送通知")                return
            # 使用Python直接导入notify.py模块并调用发送函数            # 首先将notify.py所在目录添加到Python路径            notify_dir = os.path.dirname(notify_py_path)            if notify_dir not in sys.path:                sys.path.insert(0, notify_dir)
            # 尝试导入notify模块            try:                import notify                # 调用notify的发送函数                notify.send(title, content)                logger.info("使用notify.py发送通知成功")            except ImportError as e:                logger.error(f"导入notify模块失败: {str(e)}")                # 如果导入失败,尝试使用命令行方式调用                self._fallback_notify(notify_py_path, title, content)
        except Exception as e:            logger.error(f"发送通知时发生错误: {str(e)}")
    def _fallback_notify(self, notify_py_path: str, title: str, content: str):        """        备用的通知发送方式(通过命令行调用)        Args:            notify_py_path: notify.py文件路径            title: 通知标题            content: 通知内容        """        try:            # 创建临时数据文件            data = {                "title": title,                "content": content            }
            script_dir = os.path.dirname(os.path.abspath(__file__))            temp_file = os.path.join(script_dir, "temp_notify_data.json")            with open(temp_file, 'w', encoding='utf-8'as f:                json.dump(data, f, ensure_ascii=False)
            # 使用Python执行notify.py并传递参数            cmd = f"python3 {notify_py_path} '{title}' '{content}'"            result = subprocess.run(cmd, shell=True, capture_output=True, text=True, cwd=script_dir)
            # 清理临时文件            if os.path.exists(temp_file):                os.remove(temp_file)
            if result.returncode == 0:                logger.info("通过命令行调用notify.py发送通知成功")            else:                logger.error(f"通过命令行调用notify.py发送通知失败: {result.stderr}")
        except Exception as e:            logger.error(f"备用通知方式也失败了: {str(e)}")
    def run(self):        """主运行逻辑"""        logger.info("开始恩山签到任务")
        # 检查配置        if not self.check_config():            return
        # 获取积分信息        coin, point = self.get_enshan_info()
        if coin is not None and point is not None:            title = "恩山签到成功"            content = f"恩山币:{coin}\n积分:{point}"            logger.info(f"获取信息成功: {content}")        else:            title = "恩山签到失败"            content = "获取恩山积分信息失败,请检查Cookie是否有效"            logger.error(content)
        # 发送通知        self.send_notify(title, content)
if __name__ == "__main__":    sign = EnshanSign()    sign.run()

解析

该脚本为恩山论坛自动签到脚本,主要作用包括:

  • 通过携带 Cookie(环境变量 enshanck 访问恩山论坛"积分页面",抓取当前账号的"恩山币"和"积分"数值。

  • 将结果通过青龙面板的 推送通知(成功/失败都推)。

运行流程

  1. 从环境变量读取 enshanck,设置到请求头 Cookie

  2. 用会话请求积分页 

    home.php?mod=spacecp&ac=credit&showcredit=1
  3. 用正则从返回的 HTML 中提取"恩山币""积分"。

  4. 组织消息并调用 notify.py 的 send(title, content) 推送结果。

  5. 请求失败或解析不到就重试(最多 3 次),仍失败则推送失败通知。

主要方法作用

  • __init__(self)

    • 读取环境变量 enshanck

    • 组装通用请求头(含 UA、Cookie、Referer 等)。

    • 创建 requests.Session() 会话并设置默认头。

    • 设置重试参数(max_retries=3retry_delay=5s)。

  • check_config(self) -> bool

    • 检查必须的 Cookie 是否存在;没有则记录错误并中止后续流程。

  • get_enshan_info(self) -> Tuple[Optional[str], Optional[str]]

    • 访问积分页,最多重试 3 次

    • 用正则匹配页面里的"恩山币""积分"数值并返回 (coin, point)

    • 失败则返回 (None, None) 并输出原因(网络错误、页面结构变化、Cookie 失效等)。

  • send_notify(self, title: str, content: str)

    • 在脚本目录或上级目录查找 notify.py优先模块导入调用 notify.send(...)

    • 若导入失败,调用 _fallback_notify(...) 走命令行兜底。

  • _fallback_notify(self, notify_py_path: str, title: str, content: str)

    • 以命令行 python3 notify.py 'title' 'content' 的方式触发通知,作为备选方案。

    • 过程里简单写/删一个临时文件(当前逻辑并未真正使用该临时文件的内容)。

  • run(self)

    • 总控:日志开场 → check_config → get_enshan_info → 拼装通知内容 → send_notify

依赖与配置

  • 依赖:requests(必需)。
    安装:pip3 install requests

  • 配置:在青龙/环境中设置
    export enshanck='你的恩山Cookie'


注意

本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。

【相关文章】

恩山无线论坛任务脚本(2025年7月版)

恩山无线论坛任务脚本


历史脚本txt文件获取>>
服务器搭建,人工服务咨询>>

没有评论:

发表评论

二奢、旅游类目,别截流(容易挨揍)!

哈哈哈 安全第一 最近说了不少关于截流的东西也有陆陆续续不少兄弟跟着我们去参加30天的截流训练营,按要求操作百分百能搞到流量。没看之前文章的可以参考: 截流,训练营开启! 打粉截流训练营,包回收! 抱歉,我要开始截流了 为什么我们标题当中说二奢以及旅游这样的品类节流容易挨...