返回列表 发新帖
楼主: Cynnie - 

流光助手-另类逆向

  [复制链接]

0

主题

37

回帖

121

积分

小学生

Rank: 2

金币
76
好评
0
信誉
100
发表于 前天 11:28 来自手机  | 显示全部楼层  来自 四川
厉害啊
回复

使用道具 举报

0

主题

37

回帖

121

积分

小学生

Rank: 2

金币
76
好评
0
信誉
100
发表于 前天 11:28 来自手机  | 显示全部楼层  来自 四川
厉害啊
回复

使用道具 举报

8

主题

1万

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
5136
好评
1
信誉
100
发表于 前天 11:29 来自手机  | 显示全部楼层  来自 山东
厉害厉害
回复

使用道具 举报

19

主题

3697

回帖

8864

积分

硕士生

Rank: 6Rank: 6

金币
1368
好评
0
信誉
100

MT论坛新人MT论坛最佳新人MT论坛帅哥考神

发表于 前天 11:43 来自手机  | 显示全部楼层  来自 湖北
谢谢分享
回复

使用道具 举报

1

主题

299

回帖

608

积分

初中生

Rank: 3Rank: 3

金币
309
好评
0
信誉
100
发表于 前天 11:55 来自手机  | 显示全部楼层  来自 河南
感谢分享
回复

使用道具 举报

29

主题

2027

回帖

9489

积分

硕士生

Rank: 6Rank: 6

金币
552
好评
9
信誉
100
发表于 前天 12:08 来自手机  | 显示全部楼层  来自 江苏
很强大佬厉害个,不过要服务器一般没法搞,最好来个去广告签到
回复

使用道具 举报

12

主题

148

回帖

605

积分

初中生

Rank: 3Rank: 3

金币
35
好评
4
信誉
100
QQ
发表于 前天 12:10 来自手机  | 显示全部楼层  来自 广东
北辰没有林安 发表于 2026-8-24 10:37
让gitee返回数据可以的吧

不清楚,但是只要能搭建一个代理服务器就行
回复

使用道具 举报

2

主题

1111

回帖

3496

积分

大学生

Rank: 5Rank: 5

金币
2689
好评
0
信誉
101

MT论坛最佳新人考神MT论坛新人MT论坛帅哥

发表于 前天 13:01 来自手机  | 显示全部楼层  来自 湖南
看看
回复

使用道具 举报

0

主题

1274

回帖

3178

积分

大学生

Rank: 5Rank: 5

金币
1533
好评
0
信誉
100
发表于 前天 13:17 来自手机  | 显示全部楼层  来自 云南
看看
回复

使用道具 举报

0

主题

422

回帖

1032

积分

高中生

Rank: 4

金币
465
好评
0
信誉
100
发表于 前天 13:20 来自手机  | 显示全部楼层  来自 河北
网暴真的太可怕了 发表于 2026-8-24 11:20
github 不行吗

github action?应该可以搭配cloudflare,但是github action那个好像有时长限制,单次运行限制时长,倒是可以写个定时,但是还有月额度限制。公开仓库貌似不受时长限制。
回复

使用道具 举报

15

主题

3825

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
8732
好评
0
信誉
102

考神MT论坛帅哥MT论坛新人

发表于 前天 13:31 | 显示全部楼层  来自 福建
感谢
回复

使用道具 举报

31

主题

1311

回帖

7191

积分

硕士生

Rank: 6Rank: 6

金币
3027
好评
14
信誉
101
发表于 前天 13:36 来自手机  | 显示全部楼层  来自 重庆
感谢大佬的教程

  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-

  3. from flask import Flask, request, Response
  4. import requests
  5. import json
  6. import logging

  7. logging.basicConfig(
  8.     level=logging.INFO,
  9.     format='%(asctime)s - %(levelname)s - %(message)s'
  10. )
  11. logger = logging.getLogger(__name__)

  12. app = Flask(__name__)

  13. REAL_SERVER = "https://pan-api.yodlx.com"
  14. TAMPER_PATHS = {"/api/v1/auth/me", "/api/v1/auth/login"}
  15. FAKE_EXPIRES = "2099-12-31 23:59:59"

  16. # 需要移除的响应头(Flask 会自动处理)
  17. REMOVE_HEADERS = {
  18.     'transfer-encoding',
  19.     'content-encoding',
  20.     'content-length',  # 让 Flask 自动计算
  21.     'connection',
  22.     'keep-alive',
  23.     'proxy-connection',
  24.     'upgrade',
  25. }

  26. @app.route('/', defaults={'path': ''}, methods=['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'])
  27. @app.route('/<path:path>', methods=['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'])
  28. def proxy(path):
  29.     full_url = REAL_SERVER + request.full_path
  30.     logger.info(f"Proxying {request.method} {full_url}")

  31.     # 准备请求头
  32.     headers = {k: v for k, v in request.headers.items() if k.lower() != 'host'}
  33.    
  34.     # 获取请求体
  35.     data = request.get_data()

  36.     try:
  37.         resp = requests.request(
  38.             method=request.method,
  39.             url=full_url,
  40.             headers=headers,
  41.             data=data,
  42.             params=request.args,
  43.             allow_redirects=False,
  44.             verify=True,
  45.             timeout=30,
  46.             stream=True  # 流式获取,避免内存问题
  47.         )
  48.     except requests.exceptions.RequestException as e:
  49.         logger.error(f"Forward failed: {e}")
  50.         return Response(f"Proxy error: {e}", status=502)

  51.     # 读取完整响应体(但注意大文件可能消耗内存)
  52.     content = resp.content
  53.     status_code = resp.status_code

  54.     # 清理响应头,移除可能导致冲突的字段
  55.     response_headers = {}
  56.     for key, value in resp.headers.items():
  57.         key_lower = key.lower()
  58.         if key_lower not in REMOVE_HEADERS:
  59.             response_headers[key] = value

  60.     # 判断是否需要篡改
  61.     current_path = request.path
  62.     if current_path in TAMPER_PATHS and status_code == 200:
  63.         content_type = resp.headers.get('content-type', '')
  64.         if 'application/json' in content_type and content:
  65.             try:
  66.                 j = json.loads(content)
  67.                 if 'data' in j and isinstance(j['data'], dict) and 'user' in j['data']:
  68.                     j['data']['user']['is_pro'] = 1
  69.                     j['data']['user']['pro_expires_at'] = FAKE_EXPIRES
  70.                     content = json.dumps(j, ensure_ascii=False).encode('utf-8')
  71.                     logger.info(f"✅ Tampered {current_path} -> is_pro=1")
  72.                 else:
  73.                     logger.warning(f"Unexpected JSON structure for {current_path}")
  74.             except json.JSONDecodeError as e:
  75.                 logger.warning(f"JSON decode failed: {e}")

  76.     # 构造响应(Flask 会自动处理 Content-Length 和 Transfer-Encoding)
  77.     return Response(
  78.         content,
  79.         status=status_code,
  80.         headers=response_headers,
  81.         content_type=resp.headers.get('content-type')  # 保持原 Content-Type
  82.     )

  83. if __name__ == '__main__':
  84.     app.run(host='127.0.0.1', port=8080, threaded=True)
复制代码


直接白嫖的cloudflare内网穿透。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

7

主题

3998

回帖

9248

积分

硕士生

Rank: 6Rank: 6

金币
6080
好评
1
信誉
100

考神

发表于 前天 13:36 来自手机  | 显示全部楼层  来自 河南
感谢分享
回复

使用道具 举报

19

主题

6203

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
2119
好评
0
信誉
100
发表于 前天 14:06 来自手机  | 显示全部楼层  来自 安徽
感谢分享
回复

使用道具 举报

0

主题

320

回帖

1891

积分

高中生

Rank: 4

金币
707
好评
0
信誉
100
发表于 前天 14:06 来自手机  | 显示全部楼层  来自 广东
直发成品
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表