在PuppeteerSharp中运行StealthPlugin报错,如何解决?
问题解决方法
这个错误是PuppeteerSharp与PuppeteerExtraSharp(含StealthPlugin)版本不兼容导致的——StealthPlugin依赖的IPage.EvaluateExpressionOnNewDocumentAsync(string)方法,在你当前使用的PuppeteerSharp版本中不存在或签名不匹配。
解决步骤:
统一版本组合:确保
PuppeteerSharp和PuppeteerExtraSharp(包括PuppeteerExtra.Plugins.Stealth)使用兼容版本。目前稳定的搭配是:- PuppeteerSharp 7.x + PuppeteerExtraSharp 3.x
- 或 PuppeteerSharp 8.x + PuppeteerExtraSharp 4.x
通过NuGet包管理器指定版本更新或重新安装。
替换等价方法(不升级版本的临时方案):如果无法升级,可手动修改StealthPlugin的调用逻辑,将
EvaluateExpressionOnNewDocumentAsync(string)替换为当前PuppeteerSharp中存在的EvaluateFunctionOnNewDocumentAsync(string),两者功能类似,只需调整传入的脚本格式即可。清理NuGet缓存:若存在版本冲突缓存,先卸载所有相关包,清理缓存后再重新安装指定版本的依赖。
版本兼容后的示例代码:
var extra = new PuppeteerExtra(); extra.Use(new StealthPlugin()); var options = new LaunchOptions() { Headless = false, ExecutablePath = @"C:\Program Files\Google\Chrome\Application\chrome.exe" }; var browser = await extra.LaunchAsync(options); var page = await browser.NewPageAsync(); await page.GoToAsync("http://google.com"); await page.WaitForTimeoutAsync(2000); await page.ScreenshotAsync("extra.png");
内容的提问来源于stack exchange,提问作者kokon231
相关产品推荐
相关产品推荐

