从头学习爬虫(四十二)高阶篇----模拟真正浏览器的selenium

本文主要讲述

1、selenium与真正浏览器的区别

2、模拟方法

一 介绍

selenium打开chrome或者firefox或者其他浏览器,与其真正浏览器不同的是加载参数(站在需要模拟浏览器进行自动化的方面)。

所以经常看到的是加载参数有headless、disable-infobars、ignore-certificate-errors.....

二 问题

selenium其实并不能通过很多对真正浏览器的校验。

最常用的是window.navigator.webdriver 在浏览器里面一般是

 

而当你不加参数,则window.navigator.webdriver默认为true

可以追寻到https://github.com/chromium/chromium/blob/master/third_party/blink/renderer/core/frame/navigator.h

还有js     chromium/chrome/test/chromedriver/js/call_function.js 

默认这个名字

三 解决方案

1、针对window.navigator.webdriver  这个问题

2、js可以混淆参数 名字重命名 可以打开webdriver.exe(我这边是谷歌chromedriver.exe) 用文本编译器打开直接替换

3、改源码重新编译(目前卡在同步源码中,如果可以提供优质的国外代理或者感兴趣可以加群,一起编译下chromium源码)

参考https://juejin.im/post/5c62b6d5f265da2dab17ae3c

四 拓展

chromedriver 支持的参数

https://github.com/chromium/chromium/blob/d925e7f357d93b95631c22c47e2cc93b093dacc5/content/public/common/content_switches.cc

// canvas2D的MSAA样本数。需要GPU支持MSAA
//有效果 0禁用MSAA。
const  char  kAcceleratedCanvas2dMSAASampleCount [] = “ canvas-msaa-sample-count ” ;

//默认情况下,file:// URIs无法读取其他文件:// URI。这是个
//覆盖需要旧行为进行测试的开发人员。
const  char  kAllowFileAccessFromFiles [] = “ allow-file-access-from-files ” ;

//允许忽略localhost上的TLS / SSL错误(无插页式,
//没有阻止请求)。
const  char  kAllowInsecureLocalhost [] = “ allow-insecure-localhost ” ;

//允许在网络列表中添加环回接口以进行对等连接。
const  char  kAllowLoopbackInPeerConnection [] =
    “ allow-loopback-in-peer-connection ” ;

//在linux上使用android SkFontManager。指定的目录应该
//包含名为“fonts.xml”的配置xml文件。
//这在blimp中用于在linux上模拟android字体。
const  char  kAndroidFontsPath [] = “ android-fonts-path ” ;

//设置闪烁设置。格式为<name> [= <value],<name> [= <value>],...
//名称在Settings.json5中声明。对于布尔类型,使用“true”,
// “false”,或省略'= <value>'部分设置为true。对于枚举类型,请使用int
//枚举值的值。在其他命令行标志和prefs之后应用。
const  char  kBlinkSettings [] = “ blink-settings ” ;

//导致浏览器进程在启动时崩溃。
const  char  kBrowserCrashTest [] = “ crash-test ” ;

//使浏览器进程在启动时显示对话框。
const  char  kBrowserStartupDialog [] = “ browser-startup-dialog ” ;

//为渲染器和插件子进程运行的exe的路径。
const  char  kBrowserSubprocessPath [] = “ browser- subprocess -path ” ;

//判断代码是否正在运行浏览器测试(这会更改启动URL
//由内容shell使用,并且还禁用可以进行测试的功能
//片状[像监测记忆压力])。
const  char  kBrowserTest [] = “ browser-test ” ;

//设置合成图层使用的图块大小。
const  char  kDefaultTileWidth [] = “ default-tile-width ” ;
const  char  kDefaultTileHeight [] = “ default-tile-height ” ;

//在2d画布上禁用抗锯齿功能。
const  char  kDisable2dCanvasAntialiasing [] = “ disable-canvas-aa ” ;

//禁用Canvas2D渲染到扫描输出缓冲区以进行叠加支持。
const  char  kDisable2dCanvasImageChromium [] = “ disable-2d-canvas-image-chromium ” ;

//禁用客户端可见的3D API,特别是WebGL和Pepper 3D。
//这由政策控制,与其他政策分开
//启用/禁用开关以避免意外退回策略
//支持控制对这些API的访问。
const  char  kDisable3DAPIs [] = “ disable-3d-apis ” ;

//禁用gpu-accelerated 2d画布。
const  char  kDisableAccelerated2dCanvas [] = “ disable-accelerated-2d-canvas ” ;

//禁用视频解码的硬件加速(如果可用)。
const  char  kDisableAcceleratedVideoDecode [] =
    “禁用加速视频解码” ;

//禁用视频编码的硬件加速(如果可用)。
const  char  kDisableAcceleratedVideoEncode [] =
    “禁用加速视频编码” ;

//禁用后备存储数量限制。可以防止闪烁
//拥有许多窗口/标签和大量内存的用户
const  char  kDisableBackingStoreLimit [] = “ disable-backing-store-limit ” ;

//禁用被遮挡窗口的背景渲染。完成测试以避免
//非确定性行为
const  char  kDisableBackgroundingOccludedWindowsForTesting [] =
    “ disable-backgrounding-occluded-windows ” ;

//从后台页面禁用任务限制计时器任务。
const  char  kDisableBackgroundTimerThrottling [] =
    “ disable-background-timer-throttling ” ;

//禁用一个或多个启用Blink运行时的功能。
//使用来自runtime_enabled_features.json5的名称,以逗号分隔。
//在kEnableBlinkFeatures之后应用,并在更改这些之后的其他标志之后应用
//功能
const  char  kDisableBlinkFeatures [] = “ disable-blink-features ” ;

//启用Web蓝牙扫描
//此开关无需任何操作即可启用Web蓝牙扫描
//用于测试的权限提示。
const  char  kEnableWebBluetoothScanning [] = “ enable-web-bluetooth-scanning ” ;

//在浏览器测试中禁用合成器Ukm记录。
// TODO(khushalsagar):删除一次crbug.com/761524即可解决。
const  char  kDisableCompositorUkmForTests [] = “ disable-compositor-ukm-for-tests ” ;

//禁用HTML5数据库支持。
const  char  kDisableDatabases [] = “ disable-databases ” ;

//在GPU重置后禁用3D API的每域阻止。
//此开关仅用于测试。
const  char  kDisableDomainBlockingFor3DAPIs [] =
    “ disable-domain-blocking-for-3d-apis ” ;

//禁用所有版本的WebGL。
const  char  kDisableWebGL [] = “ disable-webgl ” ;

//禁用WebGL2。
const  char  kDisableWebGL2 [] = “ disable-webgl2 ” ;

//禁用FileSystem API。
const  char  kDisableFileSystem [] = “ disable-file-system ” ;

//在挡板内禁用3D。
const  char  kDisableFlash3d [] = “ disable-flash-3d ” ;

//在挡板内禁用Stage3D。
const  char  kDisableFlashStage3d [] = “ disable-flash-stage3d ” ;

//禁用演示文稿的用户手势要求。
const  char  kDisableGestureRequirementForPresentation [] =
    “ disable-gesture-requirement-for-presentation ” ;

//禁用GPU硬件加速。如果软件渲染器不到位,
//然后GPU进程将无法启动。
const  char  kDisableGpu [] = “ disable-gpu ” ;

//阻止合成器使用其GPU实现。
const  char  kDisableGpuCompositing [] = “ disable-gpu-compositing ” ;

//禁用GPU进程的主动早期初始化。
const  char  kDisableGpuEarlyInit [] = “ disable-gpu-early-init ” ;

//不要强制所有合成器资源都由GPU内存缓冲区支持。
const  char  kDisableGpuMemoryBufferCompositorResources [] =
    “ disable-gpu-memory-buffer-compositor-resources ” ;

//禁用GpuMemoryBuffer支持的VideoFrames。
const  char  kDisableGpuMemoryBufferVideoFrames [] =
    “ disable-gpu-memory-buffer-video-frames ” ;

//对于测试,禁用GPU进程的次数限制
//重启。
const  char  kDisableGpuProcessCrashLimit [] = “ disable-gpu-process-crash-limit ” ;

//使用CPU光栅化时禁用低分辨率平铺。这用
//更少的力量,特别是在动画期间,但可能会看到更多的白色
//在快速滚动期间,特别是在较慢的设备上。
const  char  kDisableLowResTiling [] = “ disable-low-res-tiling ” ;

//如果停止响应,请禁用崩溃GPU进程的线程
//消息
const  char  kDisableGpuWatchdog [] = “ disable-gpu-watchdog ” ;

//禁止将图像动画重置为开头以避免跳过
//很多帧 仅在启用合成器图像动画时才有效。
const  char  kDisableImageAnimationResync [] = “ disable-image-animation-resync ” ;

//禁用IPC泛洪保护。
//它默认激活。一些javascript函数可用于泛洪
//使用IPC的浏览器进程 这种保护限制了它们的速率
//可以使用
const  char  kDisableIpcFloodingProtection [] = “ disable-ipc-flooding-protection ” ;

//禁止在渲染器进程中挂起监视器对话框。这可能会缓慢
//在页面上卸载处理程序以防止选项卡关闭,但是任务
//在这种情况下,Manager可用于终止违规进程。
const  char  kDisableHangMonitor [] = “ disable-hang-monitor ” ;

//禁用RenderThread的HistogramCustomizer。
const  char  kDisableHistogramCustomizer [] = “ disable-histogram-customizer ” ;

//发送错误的IPC消息时不要杀死子进程。距离
//从测试开始,从安全角度来看,这是一个糟糕的主意
//这个开关
const  char  kDisableKillAfterBadIPC [] = “ disable-kill-after-bad-ipc ” ;

//禁用LCD文本。
const  char  kDisableLCDText [] = “ disable-lcd-text ” ;

//禁用LocalStorage。
const  char  kDisableLocalStorage [] = “ disable-local-storage ” ;

//强制禁用日志记录。默认情况下,在调试中启用日志记录
//构建。
const  char  kDisableLogging [] = “ disable-logging ” ;

//在创建DXVA解码器时禁用CODECAPI_AVLowLatencyMode。
const  char  kDisableLowLatencyDxva [] = “ disable-low-latency-dxva ” ;

//禁用在渲染器未提交时清除渲染输出
//顶层导航后的新输出一段时间。
const  char  kDisableNewContentRenderingTimeout [] =
    “ disable-new-content-rendering-timeout ” ;

//禁用Web通知和推送API。
const  char  kDisableNotifications [] = “禁用通知” ;

//在渲染器中禁用部分栅格。禁用此开关也会禁用
//使用持久性gpu内存缓冲区。
const  char  kDisablePartialRaster [] = “ disable-partial-raster ” ;

//在渲染器中启用部分栅格。
const  char  kEnablePartialRaster [] = “ enable-partial-raster ” ;

//禁用Pepper3D。
const  char  kDisablePepper3d [] = “ disable-pepper-3d ” ;

//禁用权限API。
const  char  kDisablePermissionsAPI [] = “ disable-permissions-api ” ;

//禁用Pepper 3d的图像Chromium。
const  char  kDisablePepper3DImageChromium [] = “ disable-pepper-3d-image-chromium ” ;

//禁用合成器加速的触摸屏捏合手势。
const  char  kDisablePinch [] = “ disable-pinch ” ;

//禁止创建合成图层时会阻止LCD文本。
const  char  kDisablePreferCompositingToLCDText [] =
    “ disable-prefer-compositing-to-lcd-text ” ;

//禁用Presentation API。
const  char  kDisablePresentationAPI [] = “ disable-presentation-api ” ;

//禁用history.pushState / replaceState调用的限制。
const  char  kDisablePushStateThrottle [] = “ disable-pushstate-throttle ” ;

//禁用RGBA_4444纹理。
const  char  kDisableRGBA4444Textures [] = “ disable-rgba-4444-textures ” ;

//无论原点如何,都会污染所有<canvas>元素。
const  char  kDisableReadingFromCanvas [] = “ disable-reading-from-canvas ” ;

//禁用远程Web字体支持。无论如何,SVG字体应始终有效
//指定了选项。
const  char  kDisableRemoteFonts [] = “ disable-remote-fonts ” ;

//禁用RemotePlayback API。
const  char  kDisableRemotePlaybackAPI [] = “ disable-remote-playback-api ” ;

//关闭渲染器中的辅助功能。
const  char  kDisableRendererAccessibility [] = “ disable-renderer-accessibility ” ;

//设置时阻止渲染器进程后台处理。
const  char  kDisableRendererBackgrounding [] = “ disable-renderer-backgrounding ” ;

//是否禁用了ResourceScheduler。请注意,这仅适用于C ++
//无头嵌入器需要实现自己的资源调度。
const  char  kDisableResourceScheduler [] = “ disable-resource-scheduler ” ;

//禁用共享工作者
const  char  kDisableSharedWorkers [] = “ disable-shared-workers ” ;

//不要在Skia中使用运行时检测到的高端CPU优化。这是
//对于强制执行Web测试的基线代码路径很有用。
const  char  kDisableSkiaRuntimeOpts [] = “ disable-skia-runtime-opts ” ;

//禁用平滑滚动以进行测试。
const  char  kDisableSmoothScrolling [] = “禁用 - 平滑滚动” ;

//禁用3D软件光栅化器。
const  char  kDisableSoftwareRasterizer [] = “ disable-software-rasterizer ” ;

//禁用Web Speech API(语音识别和合成)。
const  char  kDisableSpeechAPI [] = “ disable-speech-api ” ;

//禁用Web Speech API的语音合成部分。
const  char  kDisableSpeechSynthesisAPI [] = “ disable-speech-synthesis-api ” ;

//禁用在网络进程中添加测试证书。
const  char  kDisableTestCerts [] = “ disable-test-root-certs ” ;

//禁用多线程GPU合成Web内容。
const  char  kDisableThreadedCompositing [] = “ disable-threaded-compositing ” ;

//禁用Web内容的多线程,合成器滚动。
const  char  kDisableThreadedScrolling [] = “ disable-threaded-scrolling ” ;

//禁用V8空闲任务。
const  char  kDisableV8IdleTasks [] = “ disable-v8-idle-tasks ” ;

//禁用WebGL渲染到扫描输出缓冲区以支持叠加。
const  char  kDisableWebGLImageChromium [] = “ disable-webgl-image-chromium ” ;

//不要强制执行同源策略。(由测试其网站的人使用。)
const  char  kDisableWebSecurity [] = “ disable-web-security ” ;

//禁用Blink的XSSAuditor。XSSAuditor减轻了反射XSS。
const  char  kDisableXSSAuditor [] = “ disable-xss- auditor ” ;

//禁用直接写入与tile关联的GPU内存的rasterizer。
const  char  kDisableZeroCopy [] = “ disable-zero-copy ” ;

//禁止视频解码器直接绘制到纹理。
const  char  kDisableZeroCopyDxgiVideo [] = “ disable-zero-copy-dxgi-video ” ;

//指定是否| DOMAutomationController | 需要受到约束
//渲染器。这种绑定在每帧的基础上发生,因此可能
//成为性能瓶颈 人们应该只在自动化dom时启用它
//基于测试。
const  char  kDomAutomationController [] = “ dom-automation ” ;

//在2d画布剪辑上禁用抗锯齿
const  char  kDisable2dCanvasClipAntialiasing [] = “ disable-2d-canvas-clip-aa ” ;

//使用GPU禁用部分解码jpeg图像。
//不使用此标志时,至少会加速YUV解码。
//除非启用GPU光栅化,否则无效。
const  char  kDisableAcceleratedJpegDecoding [] =
    “ disable-accelerated-jpeg-decoding ” ;

//记录Blink的运行时调用统计信息。 - 单一过程也需要
//与此一起使用以记录统计数据。
const  char  kDumpBlinkRuntimeCallStats [] = “ dump-blink-runtime-call-stats ” ;

//启用LCD文本。
const  char  kEnableLCDText [] = “ enable-lcd-text ” ;

//在阻止LCD文本时启用合成图层的创建。
const  char  kEnablePreferCompositingToLCDText [] =
    “ enable-prefer-compositing-to-lcd-text ” ;

//启用一个或多个启用Blink运行时的功能。
//使用来自runtime_enabled_features.json5的名称,以逗号分隔。
//在kDisableBlinkFeatures之前应用,并在更改这些之后的其他标志之后应用
//功能
const  char  kEnableBlinkFeatures [] = “ enable-blink-features ” ;

//启用正在开发的Web平台功能。
const  char  kEnableExperimentalWebPlatformFeatures [] =
    “ enable-experimental-web-platform-features ” ;

//禁用可通过OriginTrials启用的所有RuntimeEnabledFeatures。
const  char  kDisableOriginTrialControlledBlinkFeatures [] =
    “ disable-origin-trial-controlled-blink-features ” ;

//指定所有合成器资源都应由GPU内存缓冲区支持。
const  char  kEnableGpuMemoryBufferCompositorResources [] =
    “ enable-gpu-memory-buffer-compositor-resources ” ;

//启用GpuMemoryBuffer支持的VideoFrames。
const  char  kEnableGpuMemoryBufferVideoFrames [] =
    “ enable-gpu-memory-buffer-video-frames ” ;

//使用CPU光栅化时生成低分辨率平铺。低分辨率
//在快速滚动期间可能会显示切片,尤其是在较慢的设备上。
const  char  kEnableLowResTiling [] = “ enable-low-res-tiling ” ;

//强制启用日志记录。默认情况下,在发布中禁用日志记录
//构建。
const  char  kEnableLogging [] = “ enable-logging ” ;

//启用NetInfo API的type,downlinkMax属性。另外,启用
//当发生变化时触发NetInfo API的change属性
//连接类型
const  char  kEnableNetworkInformationDownlinkMax [] =
    “ enable-network-information-downlink-max ” ;

//禁止视频解码器绘制到NV12纹理而不是ARGB。
const  char  kDisableNv12DxgiVideo [] = “ disable-nv12-dxgi-video ” ;

//启用合成器加速的触摸屏捏合手势。
const  char  kEnablePinch [] = “ enable-pinch ” ;

//启用插件占位符的测试功能。仅限内部使用。
const  char  kEnablePluginPlaceholderTesting [] =
    “ enable-plugin-placeholder-testing ” ;

//使返回window.performance.memory的值更精细,更多
//在共享工作者中保持最新状态。如果没有此标志,则内存信息为
//仍然可用,但它更加频繁而且更新。这面旗帜
//也适用于工人。
const  char  kEnablePreciseMemoryInfo [] = “ enable-precise-memory-info ” ;

//启用PrintBrowser模式,其中所有内容都呈现为打印。
const  char  kEnablePrintBrowser [] = “ enable-print-browser ” ;

//启用RGBA_4444纹理。
const  char  kEnableRGBA4444Textures [] = “ enable-rgba-4444-textures ” ;

//设置缓存V8数据的选项。(关闭,预分析数据或代码)
const  char  kV8CacheOptions [] = “ v8-cache-options ” ;

//如果为true,则使用ServiceProcessLauncher启动服务。这允许
//用于加载服务二进制文件而不是使用实用程序进程。这个
//仅对测试有用。
const  char  kEnableServiceBinaryLauncher [] = “ enable-service-binary-launcher ” ;

//启用S​​kia基准测试扩展
const  char  kEnableSkiaBenchmarking [] = “ enable-skia-benchmarking ” ;

//在支持它的平台上,启用平滑滚动动画。
const  char  kEnableSmoothScrolling [] = “ enable-smooth-scrolling ” ;

//启用空间导航
const  char  kEnableSpatialNavigation [] = “ enable-spatial-navigation ” ;

//阻止来自安全上下文的所有不安全请求,并阻止用户
//从覆盖那个决定。
const  char  kEnableStrictMixedContentChecking [] =
    “ enable-strict-mixed-content-checking ” ;

//阻止许多强大功能的不安全使用(设备方向,
//例如)我们尚未弃用整个网络。
const  char  kEnableStrictPowerfulFeatureRestrictions [] =
    “ enable-strict-powerful-feature-restrictions ” ;

//为Web测试启用了线程合成。
const  char  kEnableThreadedCompositing [] = “ enable-threaded-compositing ” ;

//在执行浏览器测试期间启用跟踪。
const  char  kEnableTracing [] = “ enable-tracing ” ;

//用于将测试跟踪的输出写入的文件名。
const  char  kEnableTracingOutput [] = “ enable-tracing-output ” ;

//启用MediaStream API的屏幕捕获支持。
const  char  kEnableUserMediaScreenCapturing [] =
    “ enable-usermedia-screen-capturing ” ;

//启用使用缩放的模式来实现设备比例因子行为。
const  char  kEnableUseZoomForDSF [] = “ enable-use-zoom-for-dsf ” ;

//允许使用允许的@viewport CSS规则
//控制自己布局方面的页面。这也打开了触摸屏
//捏手势
const  char  kEnableViewport [] = “ enable-viewport ” ;

//启用Vtune Profiler支持。
const  char  kEnableVtune [] = “ enable-vtune-support ” ;

//启用Web身份验证测试API。
// https://w3c.github.io/webauthn
const  char  kEnableWebAuthTestingAPI [] = “ enable-web-authentication-testing-api ” ;

//启用WebGL2计算上下文。
const  char  kEnableWebGL2ComputeContext [] = “ enable-webgl2-compute-context ” ;

//启用社区尚未批准的WebGL扩展。
const  char  kEnableWebGLDraftExtensions [] = “ enable-webgl-draft-extensions ” ;

//启用WebGL渲染到扫描输出缓冲区以支持叠加。
const  char  kEnableWebGLImageChromium [] = “ enable-webgl-image-chromium ” ;

//启用与虚拟现实设备的交互。
const  char  kEnableWebVR [] = “ enable-webvr ” ;

//启用直接写入与磁贴关联的GPU内存的光栅化器。
const  char  kEnableZeroCopy [] = “ enable-zero-copy ” ;

//处理包含字段试用状态的共享内存段
//在进程之间共享 此开关的参数是句柄ID
//(Windows上的指针)作为字符串,后跟逗号,然后是大小
//共享内存段作为字符串。
const  char  kFieldTrialHandle [] = “ field-trial-handle ” ;

//定义用替换字符串替换的别名根目录
//在文件URL中。格式为“/ alias = / replacement”,这将转向
// file:///alias/some/path.html到file:///replacement/some/path.html。
const  char  kFileUrlPathAlias [] = “ file-url-path-alias ” ;

//始终使用Skia GPU后端绘制图层拼贴。仅适用于GPU
//加速合成+ impl-side绘画。覆盖了
// kEnableGpuRasterization标志。
const  char  kForceGpuRasterization [] = “ force-gpu-rasterization ” ;

//禁用OOP光栅化。优先于启用标志。
const  char  kDisableOopRasterization [] = “ disable-oop-rasterization ” ;

//每当gpu栅格时,为渲染器打开进程外栅格
//本来会用的。启用chromium_raster_transport扩展。
const  char  kEnableOopRasterization [] = “ enable-oop-rasterization ” ;

//打开进程外栅格的skia延迟显示列表。
const  char  kEnableOopRasterizationDDL [] = “ enable-oop-rasterization-ddl ” ;

//用于GPU光栅化的多重采样抗锯齿样本数。
//需要GPU上的MSAA支持才能生效。0禁用MSAA。
const  char  kGpuRasterizationMSAASampleCount [] =
    “ gpu-rasterization-msaa-sample-count ” ;

//强制使用硬件覆盖进行全屏视频播放。对...有用
//在其他平台上测试Android覆盖全屏功能。
const  char  kForceOverlayFullscreenVideo [] = “ force-overlay-fullscreen-video ” ;

//这会强制将页面作为表示接收器加载。有用于测试
//特定于表示接收者的行为。
//规范:https://www.w3.org/TR/presentation-api/#interface-presentationreceiver
const  char  kForcePresentationReceiverForTesting [] =
    “强制 - 呈现 - 接收器 - 测试” ;

//强制渲染器可访问性,而不是在需要时启用它
//检测到屏幕阅读器。disable-renderer-accessibility开关
//覆盖此项(如果存在)。
const  char  kForceRendererAccessibility [] = “ force-renderer-accessibility ” ;

//仅用于开发/测试 运行content_browsertests时,
//将失败的辅助功能测试的输出保存到他们的期望文件中
// content / test / data / accessibility /,覆盖现有文件内容。
const  char  kGenerateAccessibilityTestExpectations [] =
    “生成 - 可访问性 - 测试期望” ;

//用于启动GPU进程的额外命令行选项(通常使用
//用于调试)。使用像renderer-cmd-prefix。
const  char  kGpuLauncher [] = “ gpu-launcher ” ;

//使此过程成为GPU子流程。
const  char  kGpuProcess [] = “ gpu-process ” ;

//在创建GL上下文之前启动GPU沙箱。
const  char  kGpuSandboxStartEarly [] = “ gpu-sandbox-start-early ” ;

//使GPU进程在启动时显示对话框。
const  char  kGpuStartupDialog [] = “ gpu-startup-dialog ” ;

//不允许内容随意附加到后退/前进列表。
//页面必须在添加条目之前执行用户手势。
const  char  kHistoryEntryRequiresUserGesture [] =
    “ history-entry-requires-user-gesture ” ;

//使用指定的初始虚拟时间覆盖启动渲染器
自纪元以来//秒
const  char  kInitialVirtualTime [] = “ initial-virtual-time ” ;

//在浏览器进程中将GPU进程作为线程运行。
const  char  kInProcessGPU [] = “ in-process-gpu ” ;

//覆盖子进程等待的超时(以秒为单位)
//在自杀之前从浏览器连接。
const  char  kIPCConnectionTimeout [] = “ ipc-connection-timeout ” ;

//需要一组源的专用进程,指定为
//以逗号分隔的列表。例如:
//    --isolate-origins = https://www.foo.com,https://www.bar.com
const  char  kIsolateOrigins [] = “ isolate- origin ” ;

//禁用最新的运输ECMAScript 6功能。
const  char  kDisableJavaScriptHarmonyShipping [] =
    “ disable-javascript-harmony-shipping ” ;

//启用实验性Harmony(ECMAScript 6)功能。
const  char  kJavaScriptHarmony [] = “ javascript-harmony ” ;

//指定传递给JS引擎的标志
const  char  kJavaScriptFlags [] = “ js-flags ” ;

//在执行黑名单规则时记录GPU控制列表决策。
const  char  kLogGpuControlListDecisions [] = “ log-gpu-control-list-decisions ” ;

//设置最小日志级别。有效值为0到3:
// INFO = 0,WARNING = 1,LOG_ERROR = 2,LOG_FATAL = 3。
const  char  kLoggingLevel [] = “ log-level ” ;

//覆盖用于通用日志记录的默认文件名(不是
//影响记录哪些事件。
const  char  kLogFile [] = “ log-file ” ;

//主框架的大小是由横向和横向之间的变化引起的
//纵向模式(即Android),因此应重新调整页面以适应。
const  char  kMainFrameResizesAreOrientationChanges [] =
    “主框架调整大小是方向改变” ;

//指定ApplicationCache的最大磁盘高速缓存大小。默认
//值是250MB。
// TODO(crbug.com/895825):在2019年2月删除此标志。
const  char  kMaxAppCacheDiskCacheSizeMb [] = “ max-appcache-disk-cache-size-mb ” ;

//指定ApplicationCache的每个源的最大高速缓存大小。
//默认值为5MB。
// TODO(crbug.com/895825):在2019年2月删除此标志。
const  char  kMaxAppCacheOriginCacheSizeMb [] =
    “ max-appcache-origin-cache-size-mb ” ;

//设置最大解码图像大小限制。
const  char  kMaxDecodedImageSizeMb [] = “ max- decoding -image-size-mb ” ;

//设置合成图层将平铺的宽度和高度。
const  char  kMaxUntiledLayerHeight [] = “ max-untiled-layer-height ” ;
const  char  kMaxUntiledLayerWidth [] = “ max-untiled-layer-width ” ;

//表示实用程序进程应使用消息循环类型的UI运行。
const  char  kMessageLoopTypeUi [] = “ message-loop-type-ui ” ;

//使用基于Mojo的LocalStorage实现。
const  char  kMojoLocalStorage [] = “ mojo-local-storage ” ;

//设置IdlenessDetector中网络静默定时器的超时秒数。
//由希望更改超时时间以便运行Web的嵌入器使用
//各种嵌入式设备上的内容和可更改的网络带宽
//不同的地区。例如,在使用FirstMeaningfulPaint时它很有用
//发出信号以消除闪屏。
const  char  kNetworkQuietTimeout [] = “ network-quiet-timeout ” ;

//禁止使用zygote进程来分叉子进程。代替,
//子进程将直接分叉并执行。请注意--no-sandbox
//也应该与此标志一起使用,因为沙箱需要
// zygote工作。
const  char  kNoZygote [] = “ no- zygote ” ;

//禁用V8缓解以执行不受信任的代码。
const  char  kNoV8UntrustedCodeMitigations [] = “ no-v8-untrusted-code-mitigations ” ;

//用于栅格化内容的工作线程数。
const  char  kNumRasterThreads [] = “ num-raster-threads ” ;

//覆盖插件限制的行为以进行测试。
//默认情况下,仅对插件的硬编码列表启用限制程序。
//将值设置为“always”以始终限制每个插件实例。设置
//值为'never'来禁用限制。
const  char  kOverridePluginPowerSaverForTesting [] =
    “ override-plugin-power-saver-for-testing ” ;

//控制阈值以开始水平过卷相对
//到默认值。
//例如,将值设置为“133”以使过卷开始阈值为133%
//默认阈值。
const  char  kOverscrollStartThreshold [] = “ overscroll-start-threshold ” ;

//覆盖javascript中“被动”字段的默认值
// addEventListener调用。值定义为:
//   'documentonlytrue'设置默认值仅对文档级节点为true。
//   'true'在所有节点上将默认值设置为true(未指定时)。
//   'forcealltrue'强制所有节点上的值。
const  char  kPassiveListenersDefault [] = “ passive-listeners-default ” ;

//指示PPAPI代理进程类型的进程类型的参数。
const  char  kPpapiBrokerProcess [] = “ ppapi-broker ” ;

// PPAPI Flash的“命令行”参数; 用于调试选项。
const  char  kPpapiFlashArgs [] = “ ppapi-flash-args ” ;

//在进程中运行PPAPI(Pepper)插件。
const  char  kPpapiInProcess [] = “ ppapi-in-process ” ;

//指定应该用于启动ppapi插件进程的命令。
//通过净化或量化来运行插件过程非常有用。例如:
//    --ppapi-plugin-launcher =“path \ to \ purify / Run = yes”
const  char  kPpapiPluginLauncher [] = “ ppapi-plugin-launcher ” ;

//指示PPAPI插件进程类型的进程类型的参数。
const  char  kPpapiPluginProcess [] = “ ppapi ” ;

//使PPAPI子进程在启动时显示对话框。一定要用
// --no-sandbox以及沙箱不允许显示对话框。
const  char  kPpapiStartupDialog [] = “ ppapi-startup-dialog ” ;

//为所有域启用“每站点进程”流程模型。这种模式
//合并同一网站页面,以便它们共享一个进程。
//
//这里有更多细节:
// -  https://www.chromium.org/developers/design-documents/process-models
// -  site_instance.h中的类注释,列出了支持的流程模型。
//
//重要提示:不要将其与--site-per-process混淆
//隔离,而不是整合)。你可能想要另一个。
const  char  kProcessPerSite [] = “ process-per-site ” ;

//运行自己的每组脚本连接选项卡(即BrowsingInstance)
//渲染器进程 我们默认为每个使用渲染器进程
//网站实例(即来自同一注册域名的网页组)
//脚本相互连接)。
// TODO(creis):这个标志目前是无操作的。我们应该重构它以避免
// “不必要的”流程交换用于跨站点导航,但仍然交换时间
//需要安全性(例如,孤立的起源)。
const  char  kProcessPerTab [] = “ process-per-tab ” ;

//此开关的值确定进程是否以a开头
//渲染器或插件主机。如果它是空的,那就是浏览器。
const  char  kProcessType [] = “ type ” ;

//使用指定的代理服务器,覆盖系统设置。这只是开关
//影响HTTP和HTTPS请求。ARC-apps仅使用HTTP代理服务器
//最高优先级。
// TODO(yzshen):将此开关移回chrome / common / chrome_switches。{h,cc},
//一旦网络服务能够通过访问相应的设置
// pref服务
const  char  kProxyServer [] = “ proxy-server ” ;

//启用或禁用拉回刷新手势以响应垂直
//过度滚动。
//将值设置为“0”以禁用该功能,设置为“1”以启用它们
//触摸板和触摸屏,并设置为“2”以仅启用触摸屏。
//默认为禁用。
const  char  kPullToRefresh [] = “ pull-to-refresh ” ;

//注册Pepper插件(参见pepper_plugin_list.cc的格式)。
const  char  kRegisterPepperPlugins [] = “ register-pepper-plugins ” ;

//启用stdio管道远程调试[in = 3,out = 4]。
//(可选)指定协议消息的格式,也可以是
// “JSON”(默认值)或“CBOR”。
const  char  kRemoteDebuggingPipe [] = “ remote-debugging-pipe ” ;

//在指定端口上启用HTTP远程调试。
const  char  kRemoteDebuggingPort [] = “ remote-debugging-port ” ;

const  char  kRendererClientId [] = “ renderer-client-id ” ;

//此标志的内容前置于渲染器命令行。
//有用的值可能是“valgrind”或“xterm -e gdb --args”。
const  char  kRendererCmdPrefix [] = “ renderer-cmd-prefix ” ;

//使进程作为渲染器而不是浏览器运行。
const  char  kRendererProcess [] = “ renderer ” ;

//将默认/计算限制覆盖为渲染器进程数。
//此设置的非常高的值可能导致高内存/资源使用
//或不稳定
const  char  kRendererProcessLimit [] = “ renderer-process-limit ” ;

//使渲染器进程在启动时显示对话框。传递这面旗帜
//也在Windows非官方版本上添加了service_manager :: kNoSandbox,因为
//需要显示一个对话框。
const  char  kRendererStartupDialog [] = “ renderer-startup-dialog ” ;

//减少默认的`referer`标头的粒度。
const  char  kReducedReferrerGranularity [] =
  “减少引用者的粒度” ;

//使用给定速率启用本机内存采样分析器(默认为128 KiB)。
const  char  kSamplingHeapProfiler [] = “ sampling-heap-profiler ” ;

//使进程作为沙箱IPC子进程运行。
const  char  kSandboxIPCProcess [] = “ sandbox-ipc ” ;

//在网页中可视地渲染绘制的边框以帮助调试
//并研究绘画行为。
const  char  kShowPaintRects [] = “ show-paint-rects ” ;

//在与浏览器相同的进程中运行渲染器和插件
const  char  kSingleProcess [] = “单进程” ;

//强制执行每个站点一个站点的安全策略:
//   *每个渲染器进程在其整个生命周期内都专用于渲染
//     仅适用于一个网站的网页
//   *因此,来自不同站点的页面永远不会在同一个过程中。
//   *渲染器进程的访问权限基于其站点进行限制。
//   *所有跨站点导航都强制进行交换。
  只要src =是跨站点,// * <iframe>就会在进程外呈现。
//
//这里有更多细节:
// -  https://www.chromium.org/developers/design-documents/site-isolation
// -  https://www.chromium.org/developers/design-documents/process-models
// -  site_instance.h中的类注释,列出了支持的流程模型。
//
//重要提示:这不应与--process-per-site(大约是。)相混淆
//处理合并,而不是隔离)。你可能想要这个。
const  char  kSitePerProcess [] = “ site-per-process ” ;

//禁用站点隔离。
//
//请注意,选择加入(对于每个进程的站点,隔离源等)
//企业策略和/或cmdline优先于
// kDisableSiteIsolation开关(即尽管有潜力,但选择加入生效
//存在kDisableSiteIsolation开关)。
//
//请注意,由于历史原因,交换机的名称会误导性地提及
// “试验”,但交换机还会禁用发布的默认站点隔离
//自M67以来在桌面上 保留开关的名称
// chrome:// flags的反向兼容性
const  char  kDisableSiteIsolation [] = “ disable-site-isolation-trials ” ;

//就像kDisableSiteIsolation一样,但没有显示“稳定性和安全性
//将遭受“黄油棒警告。
const  char  kDisableSiteIsolationForPolicy [] =
    “禁用网站隔离政策” ;

//指定浏览器是否应以全屏模式启动,就像用户一样
//在启动后立即按下了F11。
const  char  kStartFullscreen [] = “ start-fullscreen ” ;

//指定| StatsCollectionController | 需要受到约束
//渲染器。这种绑定在每帧的基础上发生,因此可能
//成为性能瓶颈 一个人应该只在运行测试时启用它
//需要访问提供的统计信息。
const  char  kStatsCollectionController [] =
    “ enable-stats-collection-bindings ” ;

//指定skia字体缓存应使用的最大字节数。
//如果缓存需要分配更多,skia将清除以前的条目。
const  char  kSkiaFontCacheLimitMb [] = “ skia-font-cache-limit-mb ” ;

//指定skia资源应使用的最大字节数
//缓存 当内存使用时,先前的条目将从缓存中清除
//超过此限制。
const  char  kSkiaResourceCacheLimitMb [] = “ skia-resource-cache-limit-mb ” ;

//当前测试工具的类型(“浏览器”或“ui”)。
const  char  kTestType [] = “ test-type ” ;

//启用对触摸事件特征检测的支持。
const  char  kTouchEventFeatureDetection [] = “ touch-events ” ;

// kTouchEventFeatureDetection开关可能具有的值,如
// --touch-events =禁用。
//    auto:启动时附带触摸屏时启用。
const  char  kTouchEventFeatureDetectionAuto [] = “ auto ” ;
//    enabled:始终启用触摸事件。
const  char  kTouchEventFeatureDetectionEnabled [] = “ enabled ” ;
//    disabled:禁用触摸事件。
const  char  kTouchEventFeatureDetectionDisabled [] = “禁用” ;

//控制触摸文本选择时文本选择粒度如何变化
//拖动句柄。应该是“性格”或“方向”。如果没有指定,
//使用平台默认值。
const  char  kTouchTextSelectionStrategy [] = “ touch-selection-strategy ” ;

//用一个假的替换对等连接中支持的现有编解码器
//创建假视频编码器和解码器的编解码器条目。
const  char  kUseFakeCodecForPeerConnection [] =
    “ use-fake-codec-for-peer-connection ” ;

//通过选择媒体的默认设备绕过媒体流信息栏
//流(例如WebRTC)。与--use-fake-device-for-media-stream一起使用。
const  char  kUseFakeUIForMediaStream [] = “ use-fake-ui-for-media-stream ” ;

// CHROMIUM_image支持的视频帧纹理的纹理目标。
const  char  kVideoImageTextureTarget [] = “ video-image-texture-target ” ;

//在Chromium应该使用移动用户代理时设置。
const  char  kUseMobileUserAgent [] = “ use-mobile-user-agent ” ;

//使用MockCertVerifier。这仅适用于测试代码。
const  char  kUseMockCertVerifierForTesting [] =
    “ use-mock-cert-verifier-for-testing ” ;

//此标志的内容前置于实用程序进程命令行。
//有用的值可能是“valgrind”或“xterm -e gdb --args”。
const  char  kUtilityCmdPrefix [] = “ utility-cmd-prefix ” ;

//使进程作为实用程序子进程运行。
const  char  kUtilityProcess [] = “ utility ” ;

//使实用程序进程在启动时显示对话框。
const  char  kUtilityStartupDialog [] = “ utility-startup-dialog ” ;

//在调试版本中,断言输入事件流是有效的。
const  char  kValidateInputEventStream [] = “ validate-input-event-stream ” ;

//将kWaitForDebugger添加到每个子进程。如果传递了值,则为
//将用作过滤器来确定子进程是否应具有
//是否传递了kWaitForDebugger标志。
const  char  kWaitForDebuggerChildren [] = “ wait-for-debugger-children ” ;

//禁用WebRTC的RTP媒体加密。当Chrome嵌入内容时,它
//在其稳定和测试版频道上忽略此切换。
const  char  kDisableWebRtcEncryption [] = “ disable-webrtc-encryption ” ;

//禁用WebRTC的硬件解码加速。
const  char  kDisableWebRtcHWDecoding [] = “ disable-webrtc-hw-decoding ” ;

//禁用WebRTC的HW编码加速。
const  char  kDisableWebRtcHWEncoding [] = “ disable-webrtc-hw-encoding ” ;

//在WebRTC中为SRTP启用RFC 7714的GCM密码套件协商。
//有关详细信息,请参阅https://tools.ietf.org/html/rfc7714。
const  char  kEnableWebRtcSrtpAesGcm [] = “ enable-webrtc-srtp-aes-gcm ” ;

//从RFC 6904为SRTP启用加密头扩展的协商
//在WebRTC中。
//有关详细信息,请参阅https://tools.ietf.org/html/rfc6904。
const  char  kEnableWebRtcSrtpEncryptedHeaders [] =
    “ enable-webrtc-srtp-encrypted-headers ” ;

//在WebRTC的Stun消息中启用Origin标头。
const  char  kEnableWebRtcStunOrigin [] = “ enable-webrtc-stun-origin ” ;

//执行IP权限检查。TODO(guoweis):一旦该功能被删除
//不在雀色下并成为默认值。
const  char  kEnforceWebRtcIPPermissionCheck [] =
    “ enforce-webrtc-ip-permission-check ” ;

//覆盖WebRTC IP处理策略以模仿WebRTC IP时的行为
//处理策略在Preferences中指定。
const  char  kForceWebRtcIPHandlingPolicy [] = “ force-webrtc-ip-handling-policy ” ;

//覆盖调用getUserMedia时可以指定的最大帧速率。
//此标志需要一个值。示例: -  max-gum-fps = 17.5
const  char  kWebRtcMaxCaptureFramerate [] = “ max-gum-fps ” ;

//配置单个核心的最大CPU时间百分比
//用于桌面捕获。默认值为50.设置100以禁用
//限制捕获。
const  char  kWebRtcMaxCpuConsumptionPercentage [] =
    “ webrtc-max-cpu-consumption-percentage ” ;

//用于WebRTC Stun探针试验的渲染器工艺参数来确定
//间隔。请参阅SetupStunProbeTrial
// chrome_browser_field_trials_desktop.cc了解更多详情。
const  char  kWebRtcStunProbeTrialParameter [] = “ webrtc-stun-probe-trial ” ;

//无需访问即可启用WebRTC事件日志的捕获和本地存储
// chrome:// webrtc-internals。这对自动化测试很有用。它接受
//将存储本地日志的路径。禁用是不可能的
//没有重新启动浏览器并重新启动没有此标志。
const  char  kWebRtcLocalEventLogging [] = “ webrtc-event-logging ” ;

#如果定义(OS_ANDROID)
//禁用媒体会话API
const  char  kDisableMediaSessionAPI [] = “ disable-media-session-api ” ;

//禁用像Android视图中那样的过度滚动边缘效果。
const  char  kDisableOverscrollEdgeEffect [] = “ disable-overscroll-edge-effect ” ;

//垂直过度滚动内容时禁用“拉动 - 刷新”效果。
const  char  kDisablePullToRefreshEffect [] = “ disable-pull-to-refresh-effect ” ;

//禁用屏幕方向API的锁定功能。
const  char  kDisableScreenOrientationLock [] = “ disable-screen-orientation-lock ” ;

//禁用在运行缓慢时可能导致浏览器死机的超时。这个
//如果运行分析(例如debug malloc),则非常有用。
const  char  kDisableTimeoutsForProfiling [] = “ disable-timeouts-for-profiling ” ;

//启用选择控制柄的反转,以便它们不被剪切
//视口边界
const  char  kEnableAdaptiveSelectionHandleOrientation [] =
    “ enable-adaptive-selection-handle-orientation ” ;

//启用对长按触发的文本选择的拖动操作。
const  char  kEnableLongpressDragSelection [] = “ enable-longpress-drag-selection ” ;

//用于电话号码检测的电话区域(ISO国家/地区代码)。
const  char  kNetworkCountryIso [] = “ network-country-iso ” ;

//在指定的套接字名称上启用HTTP远程调试。
const  char  kRemoteDebuggingSocketName [] = “ remote-debugging-socket-name ” ;

//阻止渲染器的ChildProcessService的ChildProcessMain线程直到a
//附加了Java调试器。
const  char  kRendererWaitForJavaDebugger [] = “ renderer-wait-for-java-debugger ” ;

//为Android上的OSK启用过度滚动。
const  char  kEnableOSKOverscroll [] = “ enable-osk-overscroll ” ;
#ENDIF

//在开发中启用实验性辅助功能对象模型API。
const  char  kEnableAccessibilityObjectModel [] =
    “ enable-accessibility-object-model ” ;

//启用积极刷新DOM存储以最大限度地减少数据丢失。
const  char  kEnableAggressiveDOMStorageFlushing [] =
    “ enable-aggressive-domstorage-flushing ” ;

//启用浏览器由自动控制的指示。
const  char  kEnableAutomation [] = “ enable-automation ” ;

//为桌面共享启用音频。
const  char  kDisableAudioSupportForDesktopShare [] =
    “ disable-audio-support-for-desktop-share ” ;

#如果定义(OS_CHROMEOS)
//禁用面板拟合(用于镜像模式)。
const  char  kDisablePanelFitting [] = “ disable-panel-fitting ” ;
#ENDIF

#如果定义(OS_LINUX)&&!定义(OS_CHROMEOS)
//允许向语音调度程序发送文本到语音请求,这是常见的
// Linux语音服务 因为它有问题,用户必须明确
//启用它以便访问随机网页不会导致不稳定。
const  char  kEnableSpeechDispatcher [] = “ enable-speech-dispatcher ” ;
#ENDIF

#如果定义(OS_WIN)
// / prefetch:启动各种进程类型时使用的#prameters。它有
//观察到当文件读取与3个进程启动时一致时
//相同/ prefetch:#参数,Windows预取程序开始发出读取
//在流程启动时批处理 因为读取取决于进程类型,所以
//如果没有/ prefetch,prefetcher将无法观察到一致的读取:#
//使用了参数。请注意,浏览器进程没有/ prefetch:#
//参数; 因此,所有其他过程必须有一个以避免
//污染其个人资料。注意:#必须始终在[1,8]; 否则就是
//被Windows预取程序忽略。
const  char  kPrefetchArgumentRenderer [] = “ / prefetch:1 ” ;
const  char  kPrefetchArgumentGpu [] = “ / prefetch:2 ” ;
const  char  kPrefetchArgumentPpapi [] = “ / prefetch:3 ” ;
const  char  kPrefetchArgumentPpapiBroker [] = “ / prefetch:4 ” ;
// / prefetch:5,/ prefetch:6和/ prefetch:7保留给内容嵌入器
//并且不会被内容本身使用。

// / prefetch:#arguments由所有没有自己的进程类型共享。
//预取器可能不适用于这些流程类型
//将无法在启动时观察到一致的文件读取。然而,
//需要为这些流程类型提供有效的预取参数
//阻止它们干扰浏览器的预取配置文件
//进程
const  char  kPrefetchArgumentOther [] = “ / prefetch:8 ” ;

//设备比例因子传递给某些进程,如渲染器等。
const  char  kDeviceScaleFactor [] = “ device-scale-factor ” ;

//禁用与WebContents大小相对应的旧版窗口。
const  char  kDisableLegacyIntermediateWindow [] = “ disable-legacy-window ” ;

//为VP8 / VP9视频解码启用实验性硬件加速。
//位掩码 -  0x1 = Microsoft,0x2 = AMD,0x03 =全部尝试。
const  char  kEnableAcceleratedVpxDecode [] = “ enable-accelerated-vpx-decode ” ;

//在Win 7上为WebRtc启用H264硬件解码加速。
const  char  kEnableWin7WebRtcHWH264Decoding [] =
    “ enable-win7-webrtc-hw-h264-decoding ” ;

// DirectWrite FontCache由浏览器共享使用共享内存的渲染器。
//此开关允许我们将共享内存句柄传递给渲染器。
const  char  kFontCacheSharedHandle [] = “ font-cache-shared-handle ” ;

//设置系统被认为低于的可用内存阈值
//在中等和严重的记忆压力下。在浏览器进程中使用,
//如果无效则忽略。指定为一对逗号分隔的整数。
//有关默认值,请参阅base / win / memory_pressure_monitor.cc。
const  char  kMemoryPressureThresholdsMb [] = “ memory-pressure-thresholds-mb ” ;

//要传递给FontRenderParams :: antialiasing的布尔值(0/1)
// Ppapi进程
const  char  kPpapiAntialiasedTextEnabled [] = “ ppapi-antialiased-text-enabled ” ;

//要传递给Ppapi的FontRenderParams :: subpixel_rendering的枚举值
//进程
const  char  kPpapiSubpixelRenderingSetting [] =
    “ ppapi-subpixel-rendering-setting ” ;
#ENDIF

#如果定义(ENABLE_IPC_FUZZER)
//将从渲染器进程发送的IPC消息转储到浏览器进程
//给定目录 主要用于收集IPC模糊测试的样本。
const  char  kIpcDumpDirectory [] = “ ipc-dump-directory ” ;

//指定IPC fuzzer使用的测试用例。
const  char  kIpcFuzzerTestcase [] = “ ipc-fuzzer-testcase ” ;
#ENDIF

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值