You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自制asciinema server替代脚本未捕获会话数据排查问询

排查asciinema会话数据上传失败的方向

背景

在性能有限的开发机上,需要使用asciinema保存终端会话,但无法安装官方asciinema-server。于是编写了一个小型PHP脚本用于捕获asciinema发送到服务器的数据并保存,同时修改了~/.config/asciinema/config配置文件,将API地址设置为本地地址。

捕获脚本

编写的PHP捕获脚本如下:

<?php
session_start();
$i = [];
$i['post'] = $_POST;
$i['get'] = $_GET;
$i['request'] = $_REQUEST;
$i['server'] = $_SERVER;
$i['cookie'] = $_COOKIE;
$i['env'] = $_ENV;
$i['files'] = $_FILES;
$i['session'] = $_SESSION;
$i['body'] = file_get_contents('php://input');
$j = json_encode($i);
$n = mt_rand(100000000, 999999999);
file_put_contents(__DIR__ . "/$n.json", $j);

捕获到的请求信息

执行ls -la命令后上传会话,捕获到的请求信息如下:

{
    "post": [],
    "get": [],
    "request": [],
    "server": {
        "USER": "********",
        "HOME": "/home/********",
        "HTTP_CONNECTION": "close",
        "HTTP_AUTHORIZATION": "Basic dXNlcm5hbWU6cGFzc3dvcmQK",
        "HTTP_USER_AGENT": "asciinema/2.0.0 CPython/3.6.9 Linux/5.4.0-144-generic-x86_64-with-Ubuntu-18.04-bionic",
        "HTTP_HOST": "test.dev",
        "HTTP_ACCEPT_ENCODING": "identity",
        "SCRIPT_FILENAME": "/var/www/testbench/asciinema/api/asciicasts/index.php",
        "REDIRECT_STATUS": "200",
        "SERVER_NAME": "test.dev",
        "SERVER_PORT": "80",
        "SERVER_ADDR": "127.0.0.1",
        "REMOTE_PORT": "51626",
        "REMOTE_ADDR": "127.0.0.1",
        "SERVER_SOFTWARE": "nginx/1.14.0",
        "GATEWAY_INTERFACE": "CGI/1.1",
        "REQUEST_SCHEME": "http",
        "SERVER_PROTOCOL": "HTTP/1.1",
        "DOCUMENT_ROOT": "/var/www/testbench",
        "DOCUMENT_URI": "/asciinema/api/asciicasts/index.php",
        "REQUEST_URI": "/asciinema/api/asciicasts/",
        "SCRIPT_NAME": "/asciinema/api/asciicasts/index.php",
        "CONTENT_LENGTH": "",
        "CONTENT_TYPE": "",
        "REQUEST_METHOD": "GET",
        "QUERY_STRING": "",
        "FCGI_ROLE": "RESPONDER",
        "PHP_SELF": "/asciinema/api/asciicasts/index.php",
        "PHP_AUTH_USER": "********",
        "PHP_AUTH_PW": "********",
        "REQUEST_TIME_FLOAT": 1678396966.030703,
        "REQUEST_TIME": 1678396966
    },
    "cookie": [],
    "env": [],
    "files": [],
    "session": [],
    "body": ""
}

相关实现参考

上传会话的功能对应asciinema源码中api.py的第40行逻辑。

疑问

还应从哪些方向排查会话数据的去向?


内容的提问来源于stack exchange,提问作者Majid Fouladpour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 18:35:03