Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[建议] 新版人机还是能被绕过 #405

Closed
gougui opened this issue Oct 24, 2023 · 2 comments
Closed

[建议] 新版人机还是能被绕过 #405

gougui opened this issue Oct 24, 2023 · 2 comments
Labels

Comments

@gougui
Copy link

gougui commented Oct 24, 2023

背景与遇到的问题

通过以下代码获取cookies,从而绕过人机验证
def get_cookies(domain_name=''):
if domain_name in _cookies:
return _cookies[domain_name]
def g4f(domain_name):
user_data_dir = user_config_dir("g4f")
cookie_file = path.join(user_data_dir, "Default", "Cookies")
return [] if not path.exists(cookie_file) else chrome(cookie_file, domain_name)

cookies = {}
for cookie_fn in [g4f, chrome, chromium, opera, opera_gx, brave, edge, vivaldi, firefox]:
    try:
        cookie_jar = cookie_fn(domain_name=domain_name)
        if len(cookie_jar) and debug.logging:
            print(f"Read cookies from {cookie_fn.__name__} for {domain_name}")
        for cookie in cookie_jar:
            if cookie.name not in cookies:
                cookies[cookie.name] = cookie.value
    except BrowserCookieError as e:
        pass
_cookies[domain_name] = cookies
return _cookies[domain_name]

建议的解决方案

修复

@zclaiqcc
Copy link
Collaborator

这个原理上解决不了吧,我理解是师傅这边手动通过人机验证之后,然后获取拿到的 cookie?这部分是有过期时间的,不会一直都有效,所以这个情况感觉不算是问题?

@yrluke yrluke closed this as completed Oct 31, 2023
@DeronW
Copy link
Collaborator

DeronW commented Nov 2, 2023

如果脚本可以完全模拟浏览器,并且从浏览器中抓到了 cookie ,那么这个问题是解决不了的。如果爬虫使用的是 “无头浏览器” ,而且还完整的复制了 cookie,那么但从浏览器环境上是无法区分的。人机识别的核心是 “区分人机”,并不能防止 cookie 被盗,也不能完全等于 “防止爬虫”。

但有个好消息,针对这里的脚本,还是有些防止思路的。升级到 3.10 版本以后,部分条件下阻止了 @gougui 的脚本。

@Lorna0 Lorna0 added the released label Nov 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants