如何在Selenium控制的Chrome中查看Flash Cookie?.NET(C#)获取实例共享对象
嘿,我之前刚好碰到过类似的问题,Selenium启动的Chrome实例默认用的是临时用户数据目录,所以你本地浏览器的Flash存储路径根本找不到它的Shared Object(也就是你说的Flash Cookie)。给你几个实用的解决方案:
方案一:指定固定的用户数据目录给Selenium
这是最稳妥的方法。让Selenium的Chrome实例使用你自定义的(或者你本地默认的)用户数据目录,这样Flash的Shared Object就会存在这个目录的Flash存储路径里,和你手动打开Chrome的逻辑完全一致。
在C#里可以这么配置ChromeOptions:
using OpenQA.Selenium.Chrome; var chromeOptions = new ChromeOptions(); // 替换成你想要使用的目录路径,可以是你本地Chrome的默认目录,也可以新建一个专门的目录 // 注意:如果用本地默认目录,要确保此时没有其他Chrome实例在运行,否则会报错 chromeOptions.AddArgument(@"--user-data-dir=C:\SeleniumChromeProfile"); // 启动ChromeDriver var driver = new ChromeDriver(chromeOptions);
之后,这个目录下的Pepper Data\Shockwave Flash\WritableRoot#SharedObjects路径里,就会保存Selenium实例中Flash生成的Shared Object文件了。
方案二:获取Selenium的临时用户数据目录(不推荐)
如果不想用固定目录,也可以获取Selenium启动Chrome时的临时目录,但这个目录在浏览器关闭后会被自动删除,只能在浏览器运行期间访问。
在C#里可以尝试从Driver的Capabilities中提取:
var driver = new ChromeDriver(); // 从Chrome的Capabilities中获取用户数据目录 var chromeCapabilities = driver.Capabilities.GetCapability("chrome") as Dictionary<string, object>; var userDataDir = chromeCapabilities?["userDataDir"] as string;
拿到路径后,同样去对应的Flash存储目录找.sol文件即可。不过这个方法依赖Selenium和ChromeDriver的版本,不同版本可能有变化,稳定性不如方案一。
额外注意事项
- Flash存储权限:第一次启动指定目录的Chrome实例时,需要手动允许Kongregate游戏的Flash存储权限,之后该设置会保存在目录里,下次启动就自动生效了。
- 解析.sol文件:Flash Shared Object是二进制格式的
.sol文件,你需要用专门的解析库来读取内容,比如可以找.NET下的Flash SO解析工具(比如一些开源的类库)来处理。
内容的提问来源于stack exchange,提问作者Dimi
相关产品推荐
相关产品推荐

