Charles-mcp-server设计

charles太封闭了,没给二次开发者预留一点操作的可能性,只有基于Web Interface Settings做一些简单的功能,逆向开发风险太高了,很有可能吃力不讨好。

Web Interface Settings

网上没有现成api文档,那就只能自己爬了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
from requests.auth import HTTPBasicAuth


# --- 配置 ---
AUTH = HTTPBasicAuth('tower', '123456')
PROXIES = {"http": "http://127.0.0.1:8888"}
BLACKLIST = ['enable', 'disable', 'start', 'stop', 'clear', 'quit', 'reset', 'export']


def simple_safe_crawl(url, visited=None):
if visited is None: visited = set()
if url in visited: return []
visited.add(url)

if any(word in url.lower() for word in BLACKLIST):
return [f"{url}"]

try:
# print(f"正在扫描目录: {url}")
resp = requests.get(url, auth=AUTH, proxies=PROXIES, timeout=3)
soup = BeautifulSoup(resp.text, 'html.parser')
all_found = []
for a in soup.find_all('a'):
href = a.get('href')
if not href or href.startswith('..'): continue
full_url = urljoin(url, href)
all_found.extend(simple_safe_crawl(full_url, visited)
return all_found
except:
return []

if __name__ == "__main__":
results = simple_safe_crawl("http://control.charles/")
print("\n--- 最终扫描结果 ---")
for r in sorted(list(set(results))):
print(r)

接口如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
http://control.charles/quit
http://control.charles/recording/start
http://control.charles/recording/stop
http://control.charles/session/clear
http://control.charles/session/export-csv
http://control.charles/session/export-har
http://control.charles/session/export-json
http://control.charles/session/export-trace
http://control.charles/session/export-xml
http://control.charles/tools/allow-list/disable
http://control.charles/tools/allow-list/enable
http://control.charles/tools/auto-save/disable
http://control.charles/tools/auto-save/enable
http://control.charles/tools/block-cookies/disable
http://control.charles/tools/block-cookies/enable
http://control.charles/tools/block-list/disable
http://control.charles/tools/block-list/enable
http://control.charles/tools/breakpoints/disable
http://control.charles/tools/breakpoints/enable
http://control.charles/tools/client-process/disable
http://control.charles/tools/client-process/enable
http://control.charles/tools/dns-spoofing/disable
http://control.charles/tools/dns-spoofing/enable
http://control.charles/tools/map-local/disable
http://control.charles/tools/map-local/enable
http://control.charles/tools/map-remote/disable
http://control.charles/tools/map-remote/enable
http://control.charles/tools/no-caching/disable
http://control.charles/tools/no-caching/enable
http://control.charles/tools/rewrite/disable
http://control.charles/tools/rewrite/enable

目前的需求是:

  • 环境初始化与目标锁定

  • 精准、快速地获取数据

  • 动态篡改返回结果

  • 弱网环境一键切换

  • 紧急复位,当调试结束,或者环境配置混乱时,让 AI 能够一键恢复 Charles 到纯净抓包状态。

    成品:tianhetonghua/Charles-mcp-server