Cristy 发表于 2024-11-11 10:57

【Python】乐青内穿账号自动签到

本帖最后由 Cristy 于 2024-11-12 09:14 编辑

---
aliases:
tags:
author: Aura Service
created: 2024-11-11T10:20:43
updated: 2024-11-11T10:54:09
---
**免责声明:** 本程序仅用于学习目的,严禁用于任何商业或非法用途。

**隐私保护提示:** 文章中已对敏感信息进行脱敏处理。如果您发现任何潜在的隐私泄露问题,请不吝告知,以便我及时进行修改或删除。感谢您的理解和支持!


# 乐青内网穿透自动签到脚本介绍

## 1 概述

本文将介绍一个用于乐青内网穿透服务的自动签到脚本。该脚本使用 Python 编写,能够自动登录用户账号并进行签到,同时支持流量监控和推送通知功能。通过此脚本,用户可以轻松管理自己的乐青账号,避免手动签到的繁琐。

## 2 功能特点

- **自动登录**:脚本能够自动登录用户的乐青账号。
- **签到功能**:支持自动签到,获取签到奖励流量。
- **流量监控**:可以设置流量阈值,超过阈值后自动跳过签到。
- **推送通知**:通过 PushPlus 发送签到结果通知。

### 2.1 效果展示
**推送信息:**

![](https://www.helloimg.com/i/2024/11/11/67316ba97b14e.png)
![](https://www.helloimg.com/i/2024/11/11/67316c7103e92.png)

## 3 使用说明

### 3.1 环境准备

1. 确保已安装 Python 3.x。
2. 安装 `requests` 库,可以使用以下命令安装:

   ```bash
   pip install requests
   ```
#### 3.1.1 注册pushplus
Push Plus是一个微信通知工具,使用公众号的形式给你推送信息。
请自行前往官网了解相关信息。
官网: https://www.pushplus.plus/


### 3.2 配置账号信息

在脚本中配置你的账号信息。找到以下代码段并填写你的用户名、密码和流量限制:

```python
accounts = [
    {
      'username': '用户名',
      'password': '密码',
      'traffic_limit': '流量总量限制阈值,填入数字'
    }
    # 添加更多账号...
]
```

同时,配置 PushPlus 的 token 和 topic:

```python
token = '你的pushplus token'
topic = 'push plus (没有填空)对应组的topic'
```


### 3.3 代码结构

脚本的主要功能分为几个部分:

1. **登录功能**:通过 `login` 函数实现用户登录。
2. **签到功能**:通过 `sign` 函数实现签到操作。
3. **流量检查**:通过 `check_sign` 函数检查签到状态。
4. **推送通知**:通过 `send_pushplus_message` 函数发送签到结果通知。

### 3.4 主程序

主程序在 `main` 函数中实现,循环遍历所有账号,执行登录、签到和结果处理。最后,调用 `send_pushplus_message` 函数发送通知。

```python
def main():
    results = []
    for account in accounts:
      # 登录、签到逻辑...
    result_str = '\n'.join(results)
    print(result_str)
    return result_str
```

### 3.5 运行脚本

在命令行中运行脚本:

```bash
python locyan_auto_sign.py
```

### 3.6 部署和使用

1. 青龙部署:
- 环境变量配置(使用环境变量的话):
![](https://www.helloimg.com/i/2024/11/11/67316db9495b1.png)
- 代码上传和修改

这两处的代码 选用前者为读取环境变量中的账号数据,选择下面的则为直接使用脚本内置账号数据
![](https://www.helloimg.com/i/2024/11/11/67316ef55e95c.png)
上传记录文件名和路径
![](https://www.helloimg.com/i/2024/11/11/67316e60c7275.png)
- 配置定时任务,推荐每天执行两次(以防官方更新,服务器断网等情况)
![](https://www.helloimg.com/i/2024/11/11/67316eac49a5c.png)

2. 用linux自带的定时任务完成
```Shell
@linux ~]# crontab -l
# locyan
0 13,5 * * * python3.9 /home/locyan_auto_sign.py
```
- 如果需要使用环境变量配置,与青龙部署步骤相同,需要修改对应代码并配置环境变量

## 4 总结

通过使用这个自动签到脚本,用户可以轻松管理乐青内网穿透服务的签到操作,节省时间并确保流量的有效使用。希望本文能帮助你快速上手并充分利用这个工具!



---

**脚本源码:**
locyan_auto_sign.py
```Python
# -*- coding: utf-8 -*-

"""
@file       : locyan_auto_sign.py
@AuThor   : AuraService
@Time       : 2023/8/29 17:39
初版脚本,自动签到
@update   : 2024/8/03 11:02
官方出现因流量剩余过大变成负数的情况,添加阈值,流量过大则跳过签到
@Update   : 2024/10/04 09:55
接口更新了,重新更新代码
@Update   : 2024/10/27 13:27
修改了登录接口的请求头和参数类型
1. 从params=params 改为 data=params2. 去掉了无效参数,规避服务端更新后因body类型不为表单导致的错误
3. 请求头删除了跨域相关内容
@Description:

"""
import requests

# 配置账号信息
# accounts = json.loads(os.getenv('LOCYAN_CHECKIN'))

# 本地测试使用account
accounts = [
    {
      'username': '用户名',
      'password': '密码',
      'traffic_limit': '流量总量限制阈值'
    }
    # 添加更多账号...
]

token = '你的pushplus token'
topic = 'push plus topic'



# 下面不需要动
base_url = 'https://api-v2.locyanfrp.cn/api/v2'
login_url = '/auth/login'
user_info_url = '/user/info'
check_sign_url = "/sign"
sign_url = "/sign"


def login(username, password):
    url = f'{base_url}{login_url}'
    headers = {
      "accept": "application/json, text/plain, */*",
      "accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
      "content-type": "application/x-www-form-urlencoded",
      "priority": "u=1, i",
      "sec-ch-ua": '"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',
      "sec-ch-ua-mobile": "?0",
      "sec-ch-ua-platform": '"Windows"',
      "Referer": "https://preview.locyanfrp.cn/",
      "Referrer-Policy": "strict-origin-when-cross-origin"
    }
    params = {
      'username': username,
      'password': password,
    }
    try:
      response = requests.post(url, headers=headers, data=params)
      return response.json()
    except Exception as e:
      return {'status': False, 'message': str(e)}


def sign(token, username):
    url = f'{base_url}{sign_url}?username={username}'
    headers = {
      'accept': 'application/json, text/plain, */*',
      'accept-language': 'zh-CN,zh;q=0.9',
      'authorization': f'Bearer {token}',
      'content-type': 'application/x-www-form-urlencoded',
      'sec-ch-ua': '"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"',
      'sec-ch-ua-mobile': '?0',
      'sec-ch-ua-platform': '"Windows"',
      'sec-fetch-dest': 'empty',
      'sec-fetch-mode': 'cors',
      'sec-fetch-site': 'same-site',
      'Referer': 'https://preview.locyanfrp.cn/',
    }
    data = {
      'token': token,
    }
    try:
      response = requests.post(url, headers=headers, data=data)
      return response.json()
    except Exception as e:
      return {'status': False, 'message': str(e)}


def check_sign(token):
    url = f'{base_url}{check_sign_url}'
    headers = {
      'accept': 'application/json, text/plain, */*',
      'accept-language': 'zh-CN,zh;q=0.9',
      'authorization': f'Bearer {token}',
      'content-type': 'application/x-www-form-urlencoded',
      'sec-ch-ua': '"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"',
      'sec-ch-ua-mobile': '?0',
      'sec-ch-ua-platform': '"Windows"',
      'sec-fetch-dest': 'empty',
      'sec-fetch-mode': 'cors',
      'sec-fetch-site': 'same-site',
      'Referer': 'https://preview.locyanfrp.cn/',
    }
    data = {}
    try:
      response = requests.get(url, headers=headers, data=data)
      return response.json()
    except Exception as e:
      return {'status': False, 'message': str(e)}


def send_pushplus_message(token, title, content, topic=''):
    url = 'http://www.pushplus.plus/send'
    if topic == '':
      data = {
            'token': token,
            'title': title,
            'content': content
      }
    else:
      data = {
            'token': token,
            'title': title,
            'content': content,
            'topic': topic
      }
    response = requests.post(url, json=data)
    if response.status_code == 200:
      print("消息发送成功")
    else:
      print("消息发送失败")


def main():
    results = []

    for account in accounts:
      username = account['username']
      password = account['password']
      traffic_limit = account.get('traffic_limit', 0)

      # 登录
      login_res = login(username, password)
      if not login_res.get('status', 200) == 200:
            results.append(f"账号 {username} 登录失败: {login_res.get('message', None)}")
            continue
      login_response = login_res.get('data', {})
      token = login_response.get('token', None)
      email = login_response.get('email', '')
      avatar = login_response.get('avatar', '')
      traffic = login_response.get('traffic', {})
      inbound = login_response.get('inbound', {})
      outbound = login_response.get('outbound', {})
      print("---------")
      print(f"username : {username}")
      print(f"token : {token}")
      print(f"email : {email}")
      print(f"avatar : {avatar}")
      print(f"traffic : {traffic}")
      print(f"inbound : {inbound}")
      print(f"outbound : {outbound}")

      re = f"————————————————————\n" + \
             f"★账号: {username}\n" + \
             f"签到阈值: {traffic_limit} GiB\n" + \
             f"当前剩余流量: {traffic} GiB\n" + \
             f"上行速率: {inbound}Mbps\n" + \
             f"下行速率: {outbound}Mbps\n"

      if int(traffic) >= int(traffic_limit):
            re += f'😎 账号 {username} 流量已超过阈值,跳过签到'
            results.append(re)
            continue
      # 签到
      sign_response = sign(token, username)
      # 检查签到状态
      # check_response = check_sign(token)

      if sign_response.get('status', 0) == 200 or sign_response.get('status', 0) == 403:
            re += f"😀 签到成功 {sign_response.get('message', None)}"
            if sign_response.get('data', {}):
                get_traffic = sign_response.get('data', {}).get('get_traffic', 0)
                total_get_traffic = sign_response.get('data', {}).get('total_get_traffic', 0)
                sign_count = sign_response.get('data', {}).get('sign_count', 0)
                re += f"|签到次数:{sign_count}|本次签到获得流量:{get_traffic}|签到获得总流量:{total_get_traffic}"
      else:
            re += f"😢 签到失败 {sign_response.get('message', None)}"
      results.append(re)

    result_str = '\n'.join(results)
    print(result_str)
    return result_str


if __name__ == '__main__':
    send_pushplus_message(token, '乐青映射签到通知', main())
```

09琪琪 发表于 2024-11-12 04:47

zxy20014 发表于 2024-11-11 12:03
青龙提醒“unexpected character after line continuation character”

re = f"————————————————————\n" + \
             f"★账号: {username}\n" + \
             f"签到阈值: {traffic_limit} GiB\n" + \
             f"当前剩余流量: {traffic} GiB\n" + \
             f"上行速率: {inbound}Mbps\n" + \
             f"下行速率: {outbound}Mbps\n"

已解决,这段代码后面的\有空格,删除\后重新敲打\保证没空格

lovelin6 发表于 2024-11-12 13:33

Cristy 发表于 2024-11-12 11:19
我用错误的密码 测试也能够正确返回,提示用户没注册

你把登录这里的响应打出来看看   应该是这里返回 ...

说出来您可能不信,它应该是要验证了
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>滑动验证页面</title><meta name="viewport" content="width=device-width,initial-scale=1"><style type="text/css">body,div,html,p,span{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:0 0}body{background:#fff}</style><script type="text/javascript">void 0===window.console&&(console={log:function(){}}),window._waf_is_mobile=!1,function(i){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(i)||/1207|6310|6590|3gso|4thp|50i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez(0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-)|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10|n20|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-(|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(i.substr(0,4)))&&(window._waf_is_mobile=!0)}(navigator.userAgent||navigator.vendor||window.opera)</script><style>html,body,#PC,#H5{height:100%;width:100%;background-color:#fafafa}#PC{position:relative;.container{height:210px;width:300px;padding:34px 34px 0 34px;position:absolute;top:40%;left:50%;transform:translate(-50%,-40%);background-color:#fff;.title{font-size:20px;font-weight:500;line-height:30px;color:#3d3d3d}.id{font-size:14px;font-weight:normal;line-height:22px;color:#3d3d3d;margin-top:4px}#nocaptcha{margin-left:0}}#footer{width:100%;color:#888888;text-align:center;position:absolute;bottom:0;left:50%;right:50%;transform:translate(-50%,-50%);#svg,#tip{display:inline-block;color:#fe6a00}}}#H5{position:relative;.h5-container{box-sizing:border-box;height:220px;width:368px;position:absolute;top:40%;left:50%;transform:translate(-50%,-40%);background-color:#fff;.h5-reminder-info{padding:40px 34px 0 34px}.h5-title{font-size:20px;font-weight:500;line-height:30px;color:#3d3d3d}.h5-id{font-size:14px;font-weight:normal;line-height:22px;color:#3d3d3d;margin-top:4px}}#h5-footer{width:100%;color:#888888;text-align:center;position:absolute;bottom:0;left:50%;right:50%;transform:translate(-50%,-50%);#h5-svg,#h5-tip{display:inline-block;color:#fe6a00}}}</style></head><body><div id="PC"style="display: none"><div class="container"><div class="reminder-info"><div class="title">请完成以下操作,验证您是真人</div><div class="id">请求ID:78ceb8b717313895004258843e</div></div><div id="nocaptcha"class="nc-container"></div></div><div id="footer">性能和安全由<div id="svg"><img src="https://img.alicdn.com/imgextra/i4/O1CN01iibjTt21ufGwMxw6P_!!6000000007045-55-tps-12-12.svg"alt="logo"/></div><div id="tip">阿里云ESA</div>提供</div></div><div id="H5"style="display: none"><div class="h5-container"><div class="h5-reminder-info"><div class="h5-title">请完成以下操作,验证您是真人</div><div class="h5-id">请求ID:78ceb8b717313895004258843e</div></div><div id="h5_nocaptcha"class="nc-container"data-nc-idx="1"></div></div><div id="h5-footer">性能和安全由<div id="h5-svg"><img src="https://img.alicdn.com/imgextra/i4/O1CN01iibjTt21ufGwMxw6P_!!6000000007045-55-tps-12-12.svg"alt="logo"/></div><div id="h5-tip">阿里云ESA</div>提供</div></div></body><script type="text/javascript">var requestInfo={type:'POST',url:'https://api-v2.locyanfrp.cn/api/v2/auth/login',args:'',data:'username=lovelin&password=lin123456',token:'6732e83c-db69-1003-1b11-1211ba99d7d4',refer:'I2cXwcZptyRykxlRzsfvOXBT558=',headers:{"Content-Type":"application/x-www-form-urlencoded"},    };function insertScripts(){var t=document.createElement("script"),e=new Date,n=document.head||document.getElementsByTagName("head");t.src="//g.alicdn.com/AWSC/AWSC/awsc.js?t="+(e.getFullYear()+(e.getMonth()+1)+e.getDate()+e.getHours()),"onload"in t?t.onload=function(){initNC()}:t.onreadystatechange=function(){/loaded|complete/.test(t.readyState)&&initNC()},n.appendChild(t);var o=document.createElement("style");o.type="text/css";var i=_waf_is_mobile?".nc-container{margin-top:30px}.nc_bg{background:#fff3ea!important}.btn_slide{background:#ff6a00!important;border:0!important;color:#fff!important;width:48px!important;height:48px!important;font-size:30px;font-weight:900!important;line-height:48px!important}.btn_ok{background:#ff6a00!important;border:0!important;color:#fff!important;width:48px!important;height:48px!important;font-size:30px;font-weight:900!important;line-height:48px!important}.nc_scale{background:rgba(241,241,242,1)!important;height:48px!important}.nc-lang-cnt{height:48px!important;margin-left:10px!important;line-height:48px!important;font-size:14px!important}.nc_1_nocaptcha{width:300px!important;height:48px!important;margin:auto!important;left:0!important;right:0!important}":"#nocaptcha{margin-top:40px;margin-left:5px;width:300px!important}#nocaptcha .nc-lang-cnt{color:#fff}#nocaptcha .clickCaptcha_text .nc-lang-cnt{color:#333}#traceid{margin-left:250px!important;padding-left:140px!important;font-size:14px;color:rgba(153,153,153,1)}.nc_bg{background:#fff3ea!important}.btn_slide{background:#ff6a00!important;border:0!important;color:#fff!important;width:48px!important;height:48px!important;font-size:30px;font-weight:900!important;line-height:48px!important}.btn_ok{background:#ff6a00!important;border:0!important;color:#fff!important;width:48px!important;height:48px!important;font-size:30px;font-weight:900!important;line-height:48px!important}.nc_scale{background:rgba(241,241,242,1)!important;height:48px!important}.nc-lang-cnt{height:48px!important;margin-left:10px!important;line-height:48px!important;font-size:14px!important}.nc_1_nocaptcha{width:300px!important;height:48px!important}";try{o.appendChild(document.createTextNode(i))}catch(t){o.styleSheet.cssText=i}(n=document.head||document.getElementsByTagName("head")).appendChild(o)}function parseURL(t){var e,n,o,i=t.indexOf("?"),a=t.indexOf("#");try{o=i<0||-1<a&&a<i?a<0?(e=t,n=""):(e=t.slice(0,a),n="",t.slice(a,t.length)):a<0?(e=t.slice(0,i),n=t.slice(i,t.length),""):(e=t.slice(0,i),n=t.slice(i,a),t.slice(a,t.length))}catch(i){e=t,o=n=""}return{base:e,search:n,hash:o,original:t}}function parseQuery(t){if("?"!=t.charAt(0))return{};for(var e={},n=t.substr(1).split("&"),o=0;o<n.length;o++){var i=n.split("=");console.log(decodeURIComponent(i)),"u_asec"!==decodeURIComponent(i)&&(e)]=decodeURIComponent(i||""))}return e}function addQuery(t,e){var n=parseQuery(t),o="?";for(var i in e)n=e;for(var i in n)o+=encodeURIComponent(i)+"="+encodeURIComponent(n)+"&";return o.substr(0,o.length-1)}function combineUrl(t){return t.base+t.search+t.hash}function parseFormQuery(t){if(0===t.length||t.indexOf("=")<0)return[];for(var e=[],n=t.split("&"),o=0;o<n.length;o++){var i=n.split("="),a='<input type="hidden" name="'+i+'" value="'+i+'" />';e.push(a)}return e}function reform(t){var e=document.createElement("form"),n=parseURL(requestInfo.url);n.search=addQuery(n.search,t);var o=combineUrl(n);e.action=o,e.method="POST",e.innerHTML=parseFormQuery(requestInfo.data).join(""),document.body.appendChild(e),e.submit()}insertScripts();
    var NC_Opt={renderTo:"nocaptcha",appkey: "CF_APP_WAF", // 应用标识
    scene:"register",trans:{key1:"code100",user:"default"},token:requestInfo.token,language:"cn",isEnabled:!0,times:3,success:function(t){var e,n;document.getElementById("nc_1_n1z").innerHTML="✓",document.getElementsByClassName("nc-lang-cnt").innerHTML='<b style="margin-left:60px;-webkit-text-fill-color:#FF6A00 !important">验证成功!</b>',"GET"===requestInfo.type?(n={u_atoken:t.token,u_asession:t.sessionId,u_asig:t.sig,u_aref:requestInfo.refer},(e=parseURL(requestInfo.url)).search=addQuery(e.search,n),location.replace(combineUrl(e))):reform(n={u_atoken:t.token,u_asession:t.sessionId,u_asig:t.sig,u_aref:requestInfo.refer})},fail:function(t){window.console&&console.log(s)},error:function(t){window.console&&console.log(t)}},
    NC_h5_Opt={renderTo:"h5_nocaptcha",appkey: "CF_APP_WAF", // 应用标识
    scene:"register_h5",trans:{key1:"code200",user:"default"},token:requestInfo.token,language:"cn",isEnabled:!0,times:3,success:function(t){var e,n;document.getElementById("nc_1_n1z").innerHTML="✓",document.getElementsByClassName("nc-lang-cnt").innerHTML='<b style="margin-left:60px;-webkit-text-fill-color:#FF6A00 !important">验证成功!</b>',void 0===t.token&&(t.token=requestInfo.token),"GET"===requestInfo.type?(n={u_atoken:t.token,u_asession:t.sessionId,u_asig:t.sig,u_aref:requestInfo.refer},(e=parseURL(requestInfo.url)).search=addQuery(e.search,n),location.replace(combineUrl(e))):reform(n={u_atoken:t.token,u_asession:t.sessionId,u_asig:t.sig,u_aref:requestInfo.refer})},fail:function(t){window.console&&console.log(s)},error:function(t){window.console&&console.log(t)}};function initNC(){window._waf_is_mobile?(document.getElementById("H5").style.display="block",AWSC.use("nc",function(t,e){window.nc=e.init(NC_h5_Opt)})):(document.getElementById("PC").style.display="block",AWSC.use("nc",function(t,e){window.nc=e.init(NC_Opt)}))}</script>
      <div style="display:none" id="traceid">TraceID: 78ceb8b717313895004258843e</div>
    </html>

zxy20014 发表于 2024-11-11 12:03

青龙提醒“unexpected character after line continuation character”

dishu166 发表于 2024-11-11 12:26

感谢分享

Jansen 发表于 2024-11-11 12:29

感谢分享

GTO 发表于 2024-11-11 13:23

他们家签到给的流量好多

peter08 发表于 2024-11-11 14:44

请问这个乐青内网穿透有官网吗?

anning666 发表于 2024-11-11 15:49

学习楼主的脚本,以后其他类似的情况可以参考,tks~~~~

kings0b 发表于 2024-11-11 16:49

学到了感觉分享

shuguang2121 发表于 2024-11-11 19:06

感谢分享

09琪琪 发表于 2024-11-12 04:36

zxy20014 发表于 2024-11-11 12:03
青龙提醒“unexpected character after line continuation character”

我也是。怎么弄
页: [1] 2 3
查看完整版本: 【Python】乐青内穿账号自动签到