Selenium [求助] webdriver 进小红书官网进行操作总是报错网络异常怎么解决?

· 2024年07月03日 · 最后由 Relakkes 回复于 2024年08月03日 · 6490 次阅读


--------------------更新--------------------------
该问题已解决,通过注入 stealthjs 脚本,来反 headless 浏览器检测,具体代码如下

共收到 10 条回复 时间 点赞

https://cloud.tencent.com/developer/article/1541705

试试看这个。

selenium 自动化测试时,chrome 出现 “Chrome 正受到自动测试软件的控制” 的解决办法

这个应该是网站有反爬机制,识别到非人操作

#3 · 2024年07月03日 Author
恒温 回复


去掉 “Chrome 正在受到自动软件的控制” 这个提示,无法解决该问题

你抓下浏览器的包就知道了,使用 webdriver 访问时会带上特定的 header,你要找办法去掉

你要伪装成真人用浏览器去查看网页😌 ,在哪加我忘了,百度一下就有

通过注入 stealthjs 脚本的方式已解决该问题😀

回复

能说下具体咋操作的不?

恒温 回复

https://github.com/NanmiCoder/MediaCrawler 这个项目里的防反爬代码

回复

是这一段么?


async def _pre_headers(self, url: str, data=None) -> Dict:
    """
    请求头参数签名
    Args:
        url:
        data:

    Returns:

    """
    encrypt_params = await self.playwright_page.evaluate("([url, data]) => window._webmsxyw(url,data)", [url, data])
    local_storage = await self.playwright_page.evaluate("() => window.localStorage")
    signs = sign(
        a1=self.cookie_dict.get("a1", ""),
        b1=local_storage.get("b1", ""),
        x_s=encrypt_params.get("X-s", ""),
        x_t=str(encrypt_params.get("X-t", ""))
    )

    headers = {
        "X-S": signs["x-s"],
        "X-T": signs["x-t"],
        "x-S-Common": signs["x-s-common"],
        "X-B3-Traceid": signs["x-b3-traceid"]
    }
    self.headers.update(headers)
    return self.headers

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册