从头学习爬虫(四十二)高阶篇----模拟真正浏览器的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 

从头学习爬虫(四十二)高阶篇----模拟真正浏览器的selenium_第1张图片

默认这个名字

三 解决方案

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 ” ;

//设置闪烁设置。格式为 [=  [= ],...
//名称在Settings.json5中声明。对于布尔类型,使用“true”,
// “false”,或省略'= '部分设置为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 ” ;

//无论原点如何,都会污染所有元素。
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 =是跨站点,// *