zevairouter 1.0.148 → 1.0.150
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/CHANGELOG.md +14 -0
- package/cli/app/.next-cli-build/BUILD_ID +1 -1
- package/cli/app/.next-cli-build/app-path-routes-manifest.json +8 -8
- package/cli/app/.next-cli-build/build-manifest.json +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/callback.html +1 -1
- package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.html +1 -1
- package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/landing.html +1 -1
- package/cli/app/.next-cli-build/server/app/landing.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/login.html +1 -1
- package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app-paths-manifest.json +8 -8
- package/cli/app/.next-cli-build/server/chunks/3155.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4566.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5307.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5949.js +3 -3
- package/cli/app/.next-cli-build/server/chunks/8306.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8371.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/9621.js +1 -1
- package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/pages/404.html +1 -1
- package/cli/app/.next-cli-build/server/pages/500.html +1 -1
- package/cli/app/.next-cli-build/static/chunks/{620-16902cd352ef1d97.js → 620-4698719a19477138.js} +1 -1
- package/cli/app/CHANGELOG.md +14 -0
- package/cli/app/package.json +1 -1
- package/cli/package.json +1 -1
- package/package.json +1 -1
- package/src/lib/oauth/services/bulkImportBrowserEngine.js +78 -4
- package/src/lib/oauth/services/codebuddyCnBulkImportManager.js +395 -66
- package/src/lib/oauth/services/codebuddyCnPhoneAutomation.js +81 -45
- package/src/lib/oauth/services/kiroBulkImportManager.js +12 -9
- /package/cli/app/.next-cli-build/static/{kmlfntQuBCJ_ni8__OiKd → STIs6ehtw793h3BxKhNWo}/_buildManifest.js +0 -0
- /package/cli/app/.next-cli-build/static/{kmlfntQuBCJ_ni8__OiKd → STIs6ehtw793h3BxKhNWo}/_ssgManifest.js +0 -0
|
@@ -118,6 +118,34 @@ const IFRAME_ERROR_SELECTORS = [
|
|
|
118
118
|
".kc-feedback-text",
|
|
119
119
|
];
|
|
120
120
|
|
|
121
|
+
const RESTRICTION_COOKIE_NAMES = new Set([
|
|
122
|
+
"login_risk_state",
|
|
123
|
+
]);
|
|
124
|
+
|
|
125
|
+
const RESTRICTION_TEXT_MARKERS = [
|
|
126
|
+
"账号访问受限",
|
|
127
|
+
"安全策略限制",
|
|
128
|
+
"访问受限",
|
|
129
|
+
"account restricted",
|
|
130
|
+
"access restricted",
|
|
131
|
+
];
|
|
132
|
+
|
|
133
|
+
function hasRestrictionCookie(cookies = []) {
|
|
134
|
+
return cookies.some((cookie) => RESTRICTION_COOKIE_NAMES.has(cookie?.name));
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
function containsRestrictionText(value) {
|
|
138
|
+
const text = String(value || "").toLowerCase();
|
|
139
|
+
return RESTRICTION_TEXT_MARKERS.some((marker) => text.includes(marker.toLowerCase()));
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
function restrictedRegistrationResult(detail = "Tencent risk policy rejected the post-OTP session") {
|
|
143
|
+
return {
|
|
144
|
+
status: "failed_restricted",
|
|
145
|
+
error: `Account restricted after OTP (${detail}). Use a different residential CN/HK proxy with concurrency 1; do not retry this number on the same egress IP.`,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
|
|
121
149
|
function shouldBlockCodeBuddyResource(url, resourceType) {
|
|
122
150
|
const value = String(url || "");
|
|
123
151
|
if (/googletagmanager|googleadservices|google-analytics|doubleclick|facebook|hotjar|clarity\.ms|hm\.baidu|google\.com\/rmkt/i.test(value)) {
|
|
@@ -467,10 +495,8 @@ export async function runCodeBuddyCnPhoneRegistration({
|
|
|
467
495
|
await page.waitForTimeout(preSubmitPauseMs);
|
|
468
496
|
|
|
469
497
|
// Step 9: Click submit (#kc-login)
|
|
470
|
-
// Retry a
|
|
471
|
-
//
|
|
472
|
-
// residential CN proxy is used. Keep the loop short so Chromium cannot pin RAM.
|
|
473
|
-
// After a clean submit, poll for Keycloak cookies (China proxy SPA shell lag).
|
|
498
|
+
// Retry a clean submit only when it had no effect. A confirmed restriction
|
|
499
|
+
// is terminal for this number/IP pair and must not be resubmitted.
|
|
474
500
|
const MAX_SUBMIT_RETRIES = 2;
|
|
475
501
|
const SESSION_WAIT_MS = Math.max(postSubmit, 12_000);
|
|
476
502
|
let submitSuccess = false;
|
|
@@ -486,6 +512,10 @@ export async function runCodeBuddyCnPhoneRegistration({
|
|
|
486
512
|
reportStep("cn_session_cookies", `Keycloak session after iframe detach (${earlySession.cookie})`);
|
|
487
513
|
return { status: "success" };
|
|
488
514
|
}
|
|
515
|
+
if (hasRestrictionCookie(earlySession.cookies)) {
|
|
516
|
+
reportStep("cn_account_restricted", "Tencent login_risk_state present after iframe detached");
|
|
517
|
+
return restrictedRegistrationResult("login_risk_state cookie present");
|
|
518
|
+
}
|
|
489
519
|
return { status: "failed", error: "Lost phone iframe after submit" };
|
|
490
520
|
}
|
|
491
521
|
|
|
@@ -530,30 +560,13 @@ export async function runCodeBuddyCnPhoneRegistration({
|
|
|
530
560
|
currentFrame = (await getPhoneFrame(page)) || currentFrame;
|
|
531
561
|
|
|
532
562
|
// Check for "account restricted" (账号访问受限)
|
|
533
|
-
const restrictionDetected = await checkAccountRestricted(currentFrame);
|
|
563
|
+
const restrictionDetected = await checkAccountRestricted(page, currentFrame);
|
|
534
564
|
if (restrictionDetected) {
|
|
535
|
-
if (retry >= MAX_SUBMIT_RETRIES - 1) {
|
|
536
|
-
return {
|
|
537
|
-
status: "failed",
|
|
538
|
-
error:
|
|
539
|
-
"Account restricted (账号访问受限) after submit. Datacenter/VPS IP is usually blocked — use a residential CN/HK proxy (proxyPoolMode=single), concurrency 1, and retry. Chromium locale is zh-CN; bad egress IP still fails.",
|
|
540
|
-
};
|
|
541
|
-
}
|
|
542
|
-
// Cool-down before reload — immediate refresh+resubmit looks more automated
|
|
543
|
-
const coolMs = 2_500 + Math.floor(Math.random() * 2_000);
|
|
544
565
|
reportStep(
|
|
545
566
|
"cn_account_restricted",
|
|
546
|
-
`Account restricted (attempt ${retry + 1}) —
|
|
567
|
+
`Account restricted after submit (attempt ${retry + 1}) — stopping automatic retries`,
|
|
547
568
|
);
|
|
548
|
-
|
|
549
|
-
await page.reload({ waitUntil: "commit", timeout: nav }).catch(() => {});
|
|
550
|
-
await waitForAnyVisible(page, SPA_READY_SELECTORS, 12_000);
|
|
551
|
-
const phoneTabRetry = await waitForFirstVisibleLocator(page, PHONE_TAB_SELECTORS, { timeout: 8_000 });
|
|
552
|
-
if (phoneTabRetry) {
|
|
553
|
-
await phoneTabRetry.click().catch(() => {});
|
|
554
|
-
await page.locator(PHONE_IFRAME_SELECTOR).waitFor({ state: "attached", timeout: 8_000 }).catch(() => {});
|
|
555
|
-
}
|
|
556
|
-
continue; // Retry submit
|
|
569
|
+
return restrictedRegistrationResult("restriction message detected");
|
|
557
570
|
}
|
|
558
571
|
|
|
559
572
|
// Captcha
|
|
@@ -588,6 +601,10 @@ export async function runCodeBuddyCnPhoneRegistration({
|
|
|
588
601
|
reportStep("cn_session_cookies", `Keycloak session cookies present (${session.cookie}) — registration success`);
|
|
589
602
|
return { status: "success" };
|
|
590
603
|
}
|
|
604
|
+
if (session.reason === "restricted") {
|
|
605
|
+
reportStep("cn_account_restricted", "Restriction detected while waiting for Keycloak session");
|
|
606
|
+
return restrictedRegistrationResult("restriction message detected during session handoff");
|
|
607
|
+
}
|
|
591
608
|
|
|
592
609
|
// Still on login form? Click may not have submitted — retry
|
|
593
610
|
const stillOnForm = await isLoginFormStillVisible(page);
|
|
@@ -605,6 +622,17 @@ export async function runCodeBuddyCnPhoneRegistration({
|
|
|
605
622
|
reportStep("cn_session_cookies", `Keycloak session after home nudge (${sessionAfterHome.cookie})`);
|
|
606
623
|
return { status: "success" };
|
|
607
624
|
}
|
|
625
|
+
if (sessionAfterHome.reason === "restricted") {
|
|
626
|
+
reportStep("cn_account_restricted", "Restriction detected after home handoff");
|
|
627
|
+
return restrictedRegistrationResult("restriction message detected after OIDC handoff");
|
|
628
|
+
}
|
|
629
|
+
if (hasRestrictionCookie(sessionAfterHome.cookies)) {
|
|
630
|
+
reportStep(
|
|
631
|
+
"cn_account_restricted",
|
|
632
|
+
"Home handoff returned no authenticated session and login_risk_state is present",
|
|
633
|
+
);
|
|
634
|
+
return restrictedRegistrationResult("login_risk_state persisted after OIDC handoff");
|
|
635
|
+
}
|
|
608
636
|
|
|
609
637
|
submitSuccess = true;
|
|
610
638
|
break;
|
|
@@ -625,6 +653,13 @@ export async function runCodeBuddyCnPhoneRegistration({
|
|
|
625
653
|
reportStep("cn_registration_success", `Phone registration completed (Keycloak session: ${sessionFinal.cookie})`);
|
|
626
654
|
return { status: "success" };
|
|
627
655
|
}
|
|
656
|
+
if (hasRestrictionCookie(sessionFinal.cookies)) {
|
|
657
|
+
reportStep(
|
|
658
|
+
"cn_account_restricted",
|
|
659
|
+
"No authenticated session and Tencent login_risk_state is present — account restricted",
|
|
660
|
+
);
|
|
661
|
+
return restrictedRegistrationResult("login_risk_state without an authenticated session");
|
|
662
|
+
}
|
|
628
663
|
|
|
629
664
|
const success = await confirmRegistrationSuccess(page, phoneFrame, 10_000);
|
|
630
665
|
if (success) {
|
|
@@ -945,15 +980,13 @@ async function waitForKeycloakSession(page, { timeoutMs = 20_000, reportStep, al
|
|
|
945
980
|
// ignore
|
|
946
981
|
}
|
|
947
982
|
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
}
|
|
983
|
+
const frame = alsoCheckFrame ? await alsoCheckFrame().catch(() => null) : null;
|
|
984
|
+
if (await checkAccountRestricted(page, frame)) {
|
|
985
|
+
return { ok: false, cookies, reason: "restricted" };
|
|
986
|
+
}
|
|
987
|
+
if (frame) {
|
|
954
988
|
const err = await checkIframeError(frame);
|
|
955
989
|
if (err) return { ok: false, cookies, reason: `form_error:${err}` };
|
|
956
|
-
}
|
|
957
990
|
}
|
|
958
991
|
|
|
959
992
|
if (reportStep && Date.now() - lastReport > 4_000) {
|
|
@@ -1035,18 +1068,15 @@ async function collectPostLoginDiagnostics(page) {
|
|
|
1035
1068
|
* Check for "account restricted" message in the iframe (and main page).
|
|
1036
1069
|
* Tencent shows "账号访问受限" when a virtual number / risk policy blocks login.
|
|
1037
1070
|
*/
|
|
1038
|
-
async function checkAccountRestricted(frame) {
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
bodyText.
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
return true;
|
|
1071
|
+
async function checkAccountRestricted(page, frame) {
|
|
1072
|
+
for (const target of [frame, page]) {
|
|
1073
|
+
if (!target) continue;
|
|
1074
|
+
try {
|
|
1075
|
+
const bodyText = await target.evaluate(() => document.body?.innerText || "");
|
|
1076
|
+
if (containsRestrictionText(bodyText)) return true;
|
|
1077
|
+
} catch {
|
|
1078
|
+
// Try the other document.
|
|
1047
1079
|
}
|
|
1048
|
-
} catch {
|
|
1049
|
-
// Ignore
|
|
1050
1080
|
}
|
|
1051
1081
|
return false;
|
|
1052
1082
|
}
|
|
@@ -1132,14 +1162,18 @@ async function detectCaptcha(page, frame, timeout = 5_000) {
|
|
|
1132
1162
|
* API key capture then hard-failed on missing KEYCLOAK_IDENTITY.
|
|
1133
1163
|
*/
|
|
1134
1164
|
async function confirmRegistrationSuccess(page, frame, timeout = 15_000) {
|
|
1135
|
-
|
|
1165
|
+
let cookies = [];
|
|
1136
1166
|
try {
|
|
1137
|
-
|
|
1167
|
+
cookies = await page.context().cookies().catch(() => []);
|
|
1138
1168
|
if (findKeycloakSessionCookie(cookies)) return true;
|
|
1139
1169
|
} catch {
|
|
1140
1170
|
// Ignore
|
|
1141
1171
|
}
|
|
1142
1172
|
|
|
1173
|
+
// Never let generic app chrome override a Tencent restriction signal.
|
|
1174
|
+
if (hasRestrictionCookie(cookies)) return false;
|
|
1175
|
+
if (await isLoginFormStillVisible(page).catch(() => false)) return false;
|
|
1176
|
+
|
|
1143
1177
|
// Strong: logged-in UI chrome (avatar / logout)
|
|
1144
1178
|
for (const sel of LOGGED_IN_SELECTORS) {
|
|
1145
1179
|
try {
|
|
@@ -1154,7 +1188,6 @@ async function confirmRegistrationSuccess(page, frame, timeout = 15_000) {
|
|
|
1154
1188
|
// Soft-but-useful: left /login AND has qcloud_uid (Tencent account cookie)
|
|
1155
1189
|
try {
|
|
1156
1190
|
const url = page.url();
|
|
1157
|
-
const cookies = await page.context().cookies().catch(() => []);
|
|
1158
1191
|
const names = new Set(cookies.map((c) => c.name));
|
|
1159
1192
|
if (
|
|
1160
1193
|
url
|
|
@@ -1194,5 +1227,8 @@ export const __test__ = {
|
|
|
1194
1227
|
CAPTCHA_SELECTORS,
|
|
1195
1228
|
LOGGED_IN_SELECTORS,
|
|
1196
1229
|
KEYCLOAK_SESSION_COOKIE_NAMES,
|
|
1230
|
+
containsRestrictionText,
|
|
1231
|
+
hasRestrictionCookie,
|
|
1232
|
+
restrictedRegistrationResult,
|
|
1197
1233
|
shouldBlockCodeBuddyResource,
|
|
1198
1234
|
};
|
|
@@ -384,10 +384,13 @@ export { parsePlaywrightProxy };
|
|
|
384
384
|
* @param {"hongkong"|"china"|string} [opts.region] Used by codebuddy-cn profile
|
|
385
385
|
* @param {string|number} [opts.fingerprintSeed] Per-account seed for viewport/HW fingerprint
|
|
386
386
|
* @param {boolean} [opts.randomizeFingerprint] Force fingerprint even outside codebuddy-cn
|
|
387
|
+
* @param {boolean} [opts.nativeCloakProfile] Keep CloakBrowser's binary profile untouched
|
|
387
388
|
*/
|
|
388
389
|
export async function createFreshContext(browser, proxy, opts = {}) {
|
|
389
390
|
let effectiveProxy = proxy;
|
|
390
391
|
let socksBridge = null;
|
|
392
|
+
const useNativeCloakProfile =
|
|
393
|
+
opts.profile === "codebuddy-cn" && opts.nativeCloakProfile === true;
|
|
391
394
|
|
|
392
395
|
// Chromium cannot authenticate SOCKS5 — bridge to local HTTP proxy first
|
|
393
396
|
if (proxy) {
|
|
@@ -406,9 +409,8 @@ export async function createFreshContext(browser, proxy, opts = {}) {
|
|
|
406
409
|
// Per-account fingerprint (viewport + navigator.* + screen) via init script.
|
|
407
410
|
// Sticky residential IP alone still clusters if every session shares the same HW profile.
|
|
408
411
|
const wantFingerprint =
|
|
409
|
-
|
|
410
|
-
opts.randomizeFingerprint === true ||
|
|
411
|
-
opts.fingerprintSeed != null;
|
|
412
|
+
!useNativeCloakProfile
|
|
413
|
+
&& (opts.randomizeFingerprint === true || opts.fingerprintSeed != null);
|
|
412
414
|
let fingerprint = null;
|
|
413
415
|
if (wantFingerprint) {
|
|
414
416
|
try {
|
|
@@ -434,22 +436,20 @@ export async function createFreshContext(browser, proxy, opts = {}) {
|
|
|
434
436
|
fingerprint = null;
|
|
435
437
|
}
|
|
436
438
|
}
|
|
437
|
-
if (!contextOptions.viewport) {
|
|
439
|
+
if (!contextOptions.viewport && !useNativeCloakProfile) {
|
|
438
440
|
contextOptions.viewport = { width: 1280, height: 900 };
|
|
439
441
|
}
|
|
440
442
|
// Ignore HTTPS errors common through residential proxies / MITM chains
|
|
441
443
|
contextOptions.ignoreHTTPSErrors = true;
|
|
442
444
|
|
|
443
|
-
|
|
444
|
-
if (opts.profile === "codebuddy-cn") {
|
|
445
|
+
if (opts.profile === "codebuddy-cn" && !useNativeCloakProfile) {
|
|
445
446
|
const isChinaMainland = String(opts.region || "").toLowerCase() === "china";
|
|
446
447
|
contextOptions.locale = "zh-CN";
|
|
447
448
|
contextOptions.languages = ["zh-CN", "zh", "en-US", "en"];
|
|
448
449
|
contextOptions.timezoneId = isChinaMainland ? "Asia/Shanghai" : "Asia/Hong_Kong";
|
|
449
|
-
// Approximate city coords matching default 5sim regions (HK vs mainland)
|
|
450
450
|
contextOptions.geolocation = isChinaMainland
|
|
451
|
-
? { longitude: 121.4737, latitude: 31.2304 }
|
|
452
|
-
: { longitude: 114.1694, latitude: 22.3193 };
|
|
451
|
+
? { longitude: 121.4737, latitude: 31.2304 }
|
|
452
|
+
: { longitude: 114.1694, latitude: 22.3193 };
|
|
453
453
|
contextOptions.permissions = ["geolocation"];
|
|
454
454
|
contextOptions.extraHTTPHeaders = {
|
|
455
455
|
...(contextOptions.extraHTTPHeaders || {}),
|
|
@@ -457,6 +457,9 @@ export async function createFreshContext(browser, proxy, opts = {}) {
|
|
|
457
457
|
};
|
|
458
458
|
}
|
|
459
459
|
|
|
460
|
+
// A pasted proxy inherits CloakBrowser's binary-level locale/timezone/WebRTC
|
|
461
|
+
// profile. Phone country and residential proxy country may legitimately differ.
|
|
462
|
+
|
|
460
463
|
// Allow callers to override any field
|
|
461
464
|
if (opts.locale) contextOptions.locale = opts.locale;
|
|
462
465
|
if (opts.timezoneId) contextOptions.timezoneId = opts.timezoneId;
|
|
File without changes
|
|
File without changes
|