deckide 3.5.40 → 3.5.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/utils/agent-browser.js +25 -11
- package/package.json +1 -1
|
@@ -554,6 +554,13 @@ export class AgentBrowserService {
|
|
|
554
554
|
// GPU を browser プロセス内で動かし、GPU サンドボックスを外して回避する。
|
|
555
555
|
'--in-process-gpu',
|
|
556
556
|
'--disable-gpu-sandbox',
|
|
557
|
+
// GPU レスのサーバでも WebGL を「本物のソフトウェアレンダラ(SwiftShader/ANGLE)」として
|
|
558
|
+
// 実際に動かす。Chrome >=130 は自動 SwiftShader フォールバックを廃止したため
|
|
559
|
+
// --enable-unsafe-swiftshader が必須。WebGL が全く無いと実Chromeとして不自然で
|
|
560
|
+
// ボット判定(Cloudflare Turnstile 等)の信号になる。実機検証で WebGL 復活+無クラッシュを確認済み。
|
|
561
|
+
'--use-gl=angle',
|
|
562
|
+
'--use-angle=swiftshader',
|
|
563
|
+
'--enable-unsafe-swiftshader',
|
|
557
564
|
// ボット判定(Cloudflare の Managed Challenge 等)で誤検知されにくくする。
|
|
558
565
|
// navigator.webdriver を立てる自動化フラグを無効化する。残りの偽装は CDP 側。
|
|
559
566
|
'--disable-blink-features=AutomationControlled',
|
|
@@ -846,9 +853,13 @@ export class AgentBrowserService {
|
|
|
846
853
|
}
|
|
847
854
|
const major = (userAgent.match(/Chrome\/(\d+)/) || [])[1] || '120';
|
|
848
855
|
if (userAgent) {
|
|
856
|
+
// acceptLanguage は q 値を付けない素のカンマ区切りにする。q 値を含めると
|
|
857
|
+
// Chrome がさらに q を付与して "ja;q=0.9;q=0.9" のような実ブラウザが出さない
|
|
858
|
+
// 不正なヘッダになり、それ自体がボット信号になる。
|
|
859
|
+
const fullVersion = (userAgent.match(/Chrome\/([\d.]+)/) || [])[1] || `${major}.0.0.0`;
|
|
849
860
|
await cdp.send('Emulation.setUserAgentOverride', {
|
|
850
861
|
userAgent,
|
|
851
|
-
acceptLanguage: 'ja-JP,ja
|
|
862
|
+
acceptLanguage: 'ja-JP,ja,en-US,en',
|
|
852
863
|
platform: 'Linux x86_64',
|
|
853
864
|
userAgentMetadata: {
|
|
854
865
|
brands: [
|
|
@@ -856,20 +867,31 @@ export class AgentBrowserService {
|
|
|
856
867
|
{ brand: 'Chromium', version: major },
|
|
857
868
|
{ brand: 'Google Chrome', version: major },
|
|
858
869
|
],
|
|
859
|
-
|
|
870
|
+
fullVersionList: [
|
|
871
|
+
{ brand: 'Not_A Brand', version: '24.0.0.0' },
|
|
872
|
+
{ brand: 'Chromium', version: fullVersion },
|
|
873
|
+
{ brand: 'Google Chrome', version: fullVersion },
|
|
874
|
+
],
|
|
860
875
|
platform: 'Linux',
|
|
861
876
|
platformVersion: '',
|
|
862
877
|
architecture: 'x86',
|
|
878
|
+
bitness: '64',
|
|
879
|
+
wow64: false,
|
|
863
880
|
model: '',
|
|
864
881
|
mobile: false,
|
|
865
882
|
},
|
|
866
883
|
});
|
|
867
884
|
}
|
|
885
|
+
// 反検知は「正直で整合の取れた実Chrome」に寄せるのが正攻法。
|
|
886
|
+
// navigator.languages を Accept-Language と一致させる程度に留め、
|
|
887
|
+
// plugins や WebGL ベンダの「偽装」はしない(偽装は逆に不整合の検知信号になる)。
|
|
888
|
+
// navigator.webdriver は起動フラグ --disable-blink-features=AutomationControlled で
|
|
889
|
+
// 既に false 化されているが、保険として undefined を維持する。WebGL は実フラグ
|
|
890
|
+
// (--use-angle=swiftshader 等) で実際に動作するので、レンダラは正直に SwiftShader を返す。
|
|
868
891
|
const stealthSource = `
|
|
869
892
|
Object.defineProperty(navigator, 'webdriver', { get: () => undefined });
|
|
870
893
|
if (!window.chrome) { window.chrome = { runtime: {} }; }
|
|
871
894
|
Object.defineProperty(navigator, 'languages', { get: () => ['ja-JP', 'ja', 'en-US', 'en'] });
|
|
872
|
-
Object.defineProperty(navigator, 'plugins', { get: () => [1, 2, 3, 4, 5] });
|
|
873
895
|
try {
|
|
874
896
|
const _q = window.navigator.permissions && window.navigator.permissions.query;
|
|
875
897
|
if (_q) {
|
|
@@ -879,14 +901,6 @@ export class AgentBrowserService {
|
|
|
879
901
|
: _q(p);
|
|
880
902
|
}
|
|
881
903
|
} catch (e) { /* ignore */ }
|
|
882
|
-
try {
|
|
883
|
-
const getParam = WebGLRenderingContext.prototype.getParameter;
|
|
884
|
-
WebGLRenderingContext.prototype.getParameter = function (p) {
|
|
885
|
-
if (p === 37445) return 'Intel Inc.';
|
|
886
|
-
if (p === 37446) return 'Intel Iris OpenGL Engine';
|
|
887
|
-
return getParam.call(this, p);
|
|
888
|
-
};
|
|
889
|
-
} catch (e) { /* ignore */ }
|
|
890
904
|
`;
|
|
891
905
|
await cdp.send('Page.addScriptToEvaluateOnNewDocument', { source: stealthSource });
|
|
892
906
|
}
|