Summary
I deployed assets/exit_node/exit_node.ts with Deno and configured it as the exit node, but the relay fails because the exit-node response is not valid JSON. Instead, the endpoint returns an HTML page saying the script completed but did not return anything.
Issue
I deployed assets/exit_node/exit_node.ts on Deno Deploy.
When I open the Deno URL directly in browser, it works and returns JSON:
{"e":"method_not_allowed"}
So the Deno handler is active.
But when using it from mhrv-rs, the app still logs:
2026-05-19T17:02:01.247344Z INFO relay GET https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/g/turnstile/f/ov2/av0/rch/emotq/0x4AAAAAAADnPIDROrmt1Wwj/light/fbE/new/normal?lang=auto
2026-05-19T17:02:01.604648Z WARN exit node failed for https://chatgpt.com/favicon.ico: relay error: exit-node response not valid JSON (expected value at line 1 column 1): <!DOCTYPE html><html><head><title>Web App</title></head><body><p>The script completed but did not return anything.</p></body></html> — falling back to direct Apps Script
2026-05-19T17:02:03.543215Z INFO relay GET https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/g/cmg/1
2026-05-19T17:02:04.167860Z INFO dispatch challenges.cloudflare.com:443 -> MITM + Apps Script relay (TLS detected)
2026-05-19T17:02:04.168019Z INFO MITM TLS -> challenges.cloudflare.com:443 (socks_host=challenges.cloudflare.com, sni=challenges.cloudflare.com)
2026-05-19T17:02:04.171470Z INFO relay POST https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/g/flow/ov1/747232803:1779206941:eWp5dQ9HD4afoMoGrg7KVTXCfshPEPzzE4jwLyX7sk4/9fe4a96658ff9a3a/UAkPQGwNtXYk3Q7iHtl3JGKN2W7Tq7wvPKqtWYTPGYc-1779210066-1.2.1.1-jMy_Rh5MyVZ6yya8EcJLcvOC2fIugK9r9uOdaDy8ZDfBeFji._cJkv3OxPx1KPn6
So mhrv-rs fails with:
exit-node response not valid JSON
exit-node response not valid JSON: <!DOCTYPE html><html><head><title>Web App</title></head><body><p>The script completed but did not return anything.</p></body></html>
Expected
Since the Deno endpoint returns JSON directly, mhrv-rs should receive JSON from the exit node.
Actual
mhrv-rs receives the Apps Script-style HTML page instead and falls back to direct Apps Script.
Question
Is the exit node request maybe going to the wrong URL, or is Apps Script still being used instead of the Deno exit node?
Summary
I deployed
assets/exit_node/exit_node.tswith Deno and configured it as the exit node, but the relay fails because the exit-node response is not valid JSON. Instead, the endpoint returns an HTML page saying the script completed but did not return anything.Issue
I deployed
assets/exit_node/exit_node.tson Deno Deploy.When I open the Deno URL directly in browser, it works and returns JSON:
{"e":"method_not_allowed"}So the Deno handler is active.
But when using it from mhrv-rs, the app still logs:
So mhrv-rs fails with:
Expected
Since the Deno endpoint returns JSON directly, mhrv-rs should receive JSON from the exit node.
Actual
mhrv-rs receives the Apps Script-style HTML page instead and falls back to direct Apps Script.
Question
Is the exit node request maybe going to the wrong URL, or is Apps Script still being used instead of the Deno exit node?