fix: replace MustNavigate with SafeNavigate to bypass cookie consent …#563
fix: replace MustNavigate with SafeNavigate to bypass cookie consent …#563Mehechiger wants to merge 2 commits intoxpzouying:mainfrom
Conversation
…popups causing timeouts
|
|
我来对 PR #563 进行代码审查。首先获取 PR 信息和 diff。 PR #563 代码审查报告标题: fix: replace MustNavigate with SafeNavigate to bypass cookie consent popups causing timeouts 📋 PR 概述此 PR 解决了小红书 MCP 因 GDPR Cookie 同意弹窗导致的超时问题。通过引入 ✅ 审查结果:需要修改(Changes Requested)1. 关键问题:MustNavigate 仍可能因弹窗而失败问题描述: func SafeNavigate(page *rod.Page, url string) *rod.Page {
page.MustNavigate(url) // ← 这行仍可能因为弹窗而 panic
// ... JS 注入代码
}
建议: 2. 中等优先级:Cookie 按钮匹配文本不够全面当前代码: return text.includes('accept all cookies') ||
text.includes('agree and continue') ||
text.includes('accept cookies');问题:
建议: return text.includes('accept all cookies') ||
text.includes('agree and continue') ||
text.includes('accept cookies') ||
text.includes('同意') ||
text.includes('接受') ||
text.includes('允许');3. 低优先级:轮询间隔可能影响性能当前实现: const interval = setInterval(() => { ... }, 200);
setTimeout(() => clearInterval(interval), 10000);问题:
建议: 4. 代码风格:返回值未使用但保持链式调用优点:
✅ 正面评价
📝 建议修改// xiaohongshu/navigate.go
func SafeNavigate(page *rod.Page, url string) *rod.Page {
page.MustNavigate(url)
page.MustEval(`() => {
const interval = setInterval(() => {
let btns = Array.from(document.querySelectorAll('button, div[role="button"], span'))
let target = btns.find(el => {
let text = el.textContent ? el.textContent.toLowerCase() : "";
return text.includes('accept all cookies') ||
text.includes('agree and continue') ||
text.includes('accept cookies') ||
text.includes('同意') || // 添加中文支持
text.includes('接受全部') ||
text.includes('允许');
})
if (target) {
target.click();
console.log('Cookie consent dialog auto-accepted');
clearInterval(interval);
}
}, 200);
setTimeout(() => clearInterval(interval), 10000);
}`)
return page
}📊 总结
建议:在合并前,请:
@Mehechiger 请查看上述问题,特别是 Cookie 按钮的中文文本匹配。修复后我可以再次审查。 |
|
哈喽,之前用的时候发现被cookies弹窗拦住agent整个卡在那儿了,于是加了个逻辑点掉它 |
|
已根据建议修复完成。改用 |
…popups causing timeouts