52naiba 发表于 2025-5-29 14:45:26

xhttp到底是个啥

没部署过<br />
他可以回程走hy2吗

alog148 发表于 2025-5-29 16:29:49

就是伪装正常的网页提交数据<br />

蒙面人 发表于 2025-5-29 16:31:48

<div class="quote"><blockquote><font size="2"><a href="https://hostloc.com/forum.php?mod=redirect&goto=findpost&pid=16400376&ptid=1412636" target="_blank"><font color="#999999">alog148 发表于 2025-5-29 16:29</font></a></font><br />
就是伪装正常的网页提交数据</blockquote></div><br />
谁家网页返回那么多数据。。。

bbsbbs 发表于 2025-5-29 16:29:00

分段上传,流式下载<img src="https://hostloc.com/static/image/smiley/default/lol.gif" smilieid="12" border="0" alt="" /> <br /><div class="blockcode"><div id="code_Q51"><ol><li>https://www.有图比.com/watch?v=GB_SHmqotzQ</ol></div><em onclick="copycode($('code_Q51'));">复制代码</em></div>

alog148 发表于 2025-5-29 16:32:42

<i class="pstatus"> 本帖最后由 alog148 于 2025-5-29 16:34 编辑 </i><br />
<div class="quote"><blockquote><font size="2"><a href="https://hostloc.com/forum.php?mod=redirect&goto=findpost&pid=16400384&ptid=1412636" target="_blank"><font color="#999999">蒙面人 发表于 2025-5-29 16:31</font></a></font><br />
谁家网页返回那么多数据。。。</blockquote></div><br />
<br />
拆包啊,你没看文档说明吗<br />
<br />
分段上传,流式下载<br />
<br />
对于 XHTTP 兼容性最强的“分包上行、流式下行”,即 packet-up 模式,我们是这样设计的:<br />
<br />
客户端 POST /yourpath/sameUUID/seq 以发送上行数据:<br />
<br />
UUID 是随机生成的,等下启动下行时的 UUID 与它相同,以便服务端关联,若服务端未在 30 秒内成功关联,将终止会话<br />
seq 从 0 开始,必须发完上一个 POST 的 body(但无需等响应)再发下一个<br />
多个 POST 有小概率乱序到达服务端,服务端会按 seq 进行重组,默认最多缓存 30 个,超限断连<br />
注意 UUID 和 seq 都设计在 path 里而非 query string,以避免遇到奇怪的问题<br />
客户端 GET /yourpath/sameUUID 启动下行,服务端响应头包含:<br />
<br />
X-Accel-Buffering: no 以告知中间盒禁用缓冲<br />
Cache-Control: no-store 以告知中间盒无需缓存<br />
Content-Type: text/event-stream 以伪装成 server-sent events(兼容性更好,可以设置 noSSEHeader 以关闭)<br />
若为 HTTP/1.1 还需包含 Transfer-Encoding: chunked,H2/H3 则不需要<br />
为了避免浏览器转发 Browser Dialer 遇到跨域限制,服务端针对所有 GET、POST 的响应头都会包含:<br />
<br />
Access-Control-Allow-Origin: *<br />
Access-Control-Allow-Methods: GET, POST<br />
为了解决 HTTP 请求头和响应头的固定长度特征:<br />
<br />
客户端发的 request header 均默认包含 Referer: ...?x_padding=XXX...(放 Referer 是为了防止 Browser Dialer 产生不必要的 OPTIONS 请求),默认长度为 100-1000,每次请求随机,服务端默认会检查它是否在服务端允许的范围内<br />
服务端发的 response header 均默认包含 X-Padding: XXX...,默认长度为 100-1000,每次响应随机<br />
这便是我多次提及的 header padding,对应设置项为 xPaddingBytes<br />
请求头的 padding 改为放到 Referer 由 @rPDmYQ 提出,选用 XXX 也是,X 在 huffman encoding 中为 8 bit<br />
分包上行、Referer: ...?x_padding=XXX... 会产生较多、较长的日志,你可以在反代软件中设置不记录它们。<br />
<br />
此外,和 Xray 的其它传输层一样,服务端也接受 X-Forwarded-For header 以取得客户端的真实 IP,也会依据服务端设置的 host 来检查客户端发来的 host(个人建议是没事别设,毕竟已经隐藏在 path 后面了)。<br />
<br />
以上就是 packet-up 模式的最简化、必要流程,不过此时还有个小问题:如何具体实施、限制 POST 请求?有三个专属参数:<br />
<br />
scMaxEachPostBytes:客户端每个 POST 最多携带多少数据,默认值 1000000 即 1MB,该值应小于 CDN 等 HTTP 中间盒所允许的最大值,服务端也会拒绝大于该值的 POST<br />
scMinPostsIntervalMs:仅客户端,基于单个代理请求,客户端发起 POST 请求的最小间隔,默认值 30 毫秒<br />
scMaxBufferedPosts:仅服务端,基于单个代理请求,服务端最多缓存多少个 POST 请求,默认值 30 个,超限断连<br />
“基于单个代理请求”的意思是每个代理请求各自计数、互不影响,即使它们在同一条 H2 / H3 连接内,这便是 sc 即 sub-connection 的含义。为了减少指纹,前两个值可以设为范围的形式,比如分别为字符串 &quot;500000-1000000&quot;、&quot;10-50&quot;,每次随机。这些参数都可以通过 extra 下发给客户端,文末有说明。此外值得一提的是,Xray 最新版优化了 packet-up,速率甚至直追 stream-up,主要利好 QUIC H3 过 CDN。

carllei 发表于 2025-5-29 16:33:04

感觉很牛
页: [1]
查看完整版本: xhttp到底是个啥