mirror of
https://github.com/masterking32/MasterHttpRelayVPN.git
synced 2026-05-17 21:24:37 +03:00
Fixed the youtube safesearch problems.
This commit is contained in:
@@ -289,6 +289,7 @@ This project focuses entirely on the **Apps Script** relay — a free Google acc
|
|||||||
| `bypass_hosts` | `["localhost", ".local", ".lan", ".home.arpa"]` | Hosts that go direct (no MITM, no relay). Useful for LAN resources or sites that break under MITM. |
|
| `bypass_hosts` | `["localhost", ".local", ".lan", ".home.arpa"]` | Hosts that go direct (no MITM, no relay). Useful for LAN resources or sites that break under MITM. |
|
||||||
| `direct_google_exclude` | see [config.example.json](config.example.json) | Google apps that must use the MITM relay path instead of the fast direct tunnel. |
|
| `direct_google_exclude` | see [config.example.json](config.example.json) | Google apps that must use the MITM relay path instead of the fast direct tunnel. |
|
||||||
| `hosts` | `{}` | Manual DNS override: map a hostname to a specific IP. |
|
| `hosts` | `{}` | Manual DNS override: map a hostname to a specific IP. |
|
||||||
|
| `youtube_via_relay` | `false` | Route YouTube (`youtube.com`, `youtu.be`, `youtube-nocookie.com`) through the Apps Script relay instead of the SNI-rewrite path. The SNI-rewrite path uses Google's frontend IP which enforces SafeSearch and can cause **"Video Unavailable"** errors. Setting this to `true` fixes playback at the cost of using more Apps Script executions and slightly higher latency. |
|
||||||
|
|
||||||
### Optional Dependencies
|
### Optional Dependencies
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
`masterking32.ton`
|
`masterking32.ton`
|
||||||
|
|
||||||
- آدرس روی شبکههای EVM (ETH و سازگارها):
|
- آدرس روی شبکههای EVM (ETH و سازگارها):
|
||||||
|
|
||||||
`0x517f07305D6ED781A089322B6cD93d1461bF8652`
|
`0x517f07305D6ED781A089322B6cD93d1461bF8652`
|
||||||
|
|
||||||
@@ -237,6 +237,7 @@ json
|
|||||||
| `block_hosts` | `[]` | هاستهایی که هرگز نباید tunnel شوند (پاسخ 403). نام دقیق (`ads.example.com`) یا پسوند با نقطهی ابتدایی (`.doubleclick.net`). |
|
| `block_hosts` | `[]` | هاستهایی که هرگز نباید tunnel شوند (پاسخ 403). نام دقیق (`ads.example.com`) یا پسوند با نقطهی ابتدایی (`.doubleclick.net`). |
|
||||||
| `bypass_hosts` | `["localhost", ".local", ".lan", ".home.arpa"]` | هاستهایی که مستقیم میروند (بدون MITM و بدون رله). برای منابع داخلی شبکه یا سایتهایی که با MITM مشکل دارند. |
|
| `bypass_hosts` | `["localhost", ".local", ".lan", ".home.arpa"]` | هاستهایی که مستقیم میروند (بدون MITM و بدون رله). برای منابع داخلی شبکه یا سایتهایی که با MITM مشکل دارند. |
|
||||||
| `direct_google_exclude` | مراجعه به [config.example.json](config.example.json) | اپهای Google که باید از مسیر MITM برای رله استفاده کنند بهجای tunnel مستقیم. |
|
| `direct_google_exclude` | مراجعه به [config.example.json](config.example.json) | اپهای Google که باید از مسیر MITM برای رله استفاده کنند بهجای tunnel مستقیم. |
|
||||||
|
| `youtube_via_relay` | `false` | مسیردهی YouTube (`youtube.com`، `youtu.be`، `youtube-nocookie.com`) از طریق رله Apps Script بهجای مسیر SNI-rewrite. مسیر SNI-rewrite از IP فرانتاند Google عبور میکند که SafeSearch را اجباری میکند و میتواند باعث خطای **«ویدیو در دسترس نیست»** شود. با فعال کردن این گزینه، پخش ویدیو درست میشود اما تعداد اجراهای Apps Script بیشتر و تأخیر اندکی بالاتر میرود. |
|
||||||
|
|
||||||
### وابستگیهای اختیاری
|
### وابستگیهای اختیاری
|
||||||
|
|
||||||
|
|||||||
@@ -42,5 +42,6 @@
|
|||||||
"www.google.com",
|
"www.google.com",
|
||||||
"safebrowsing.google.com"
|
"safebrowsing.google.com"
|
||||||
],
|
],
|
||||||
|
"youtube_via_relay": false,
|
||||||
"hosts": {}
|
"hosts": {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -201,6 +201,20 @@ class ProxyServer:
|
|||||||
self._block_hosts = self._load_host_rules(config.get("block_hosts", []))
|
self._block_hosts = self._load_host_rules(config.get("block_hosts", []))
|
||||||
self._bypass_hosts = self._load_host_rules(config.get("bypass_hosts", []))
|
self._bypass_hosts = self._load_host_rules(config.get("bypass_hosts", []))
|
||||||
|
|
||||||
|
# youtube_via_relay: route YouTube through Apps Script relay instead of
|
||||||
|
# the SNI-rewrite path. The SNI-rewrite path shares Google's frontend
|
||||||
|
# IP which enforces SafeSearch and can cause "Video Unavailable".
|
||||||
|
# Enabling this fixes YouTube playback at the cost of using more
|
||||||
|
# Apps Script executions and slightly higher latency.
|
||||||
|
if config.get("youtube_via_relay", False):
|
||||||
|
self._SNI_REWRITE_SUFFIXES = tuple(
|
||||||
|
s for s in SNI_REWRITE_SUFFIXES
|
||||||
|
if s not in self._YOUTUBE_SNI_SUFFIXES
|
||||||
|
)
|
||||||
|
log.info("youtube_via_relay enabled — YouTube routed through relay")
|
||||||
|
else:
|
||||||
|
self._SNI_REWRITE_SUFFIXES = SNI_REWRITE_SUFFIXES
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from mitm import MITMCertManager
|
from mitm import MITMCertManager
|
||||||
self.mitm = MITMCertManager()
|
self.mitm = MITMCertManager()
|
||||||
@@ -624,6 +638,12 @@ class ProxyServer:
|
|||||||
# Built-in list of domains that must be reached via Google's frontend IP
|
# Built-in list of domains that must be reached via Google's frontend IP
|
||||||
# with SNI rewritten to `front_domain` (default: www.google.com).
|
# with SNI rewritten to `front_domain` (default: www.google.com).
|
||||||
# Source: constants.SNI_REWRITE_SUFFIXES.
|
# Source: constants.SNI_REWRITE_SUFFIXES.
|
||||||
|
# When youtube_via_relay is enabled the YouTube suffixes are removed so
|
||||||
|
# YouTube goes through the Apps Script relay instead (avoids SafeSearch
|
||||||
|
# forced by the Google frontend IP, at the cost of extra relay executions).
|
||||||
|
_YOUTUBE_SNI_SUFFIXES = frozenset({
|
||||||
|
"youtube.com", "youtu.be", "youtube-nocookie.com",
|
||||||
|
})
|
||||||
_SNI_REWRITE_SUFFIXES = SNI_REWRITE_SUFFIXES
|
_SNI_REWRITE_SUFFIXES = SNI_REWRITE_SUFFIXES
|
||||||
|
|
||||||
def _sni_rewrite_ip(self, host: str) -> str | None:
|
def _sni_rewrite_ip(self, host: str) -> str | None:
|
||||||
|
|||||||
Reference in New Issue
Block a user