【发布时间】:2021-04-14 13:55:28
【问题描述】:
我想使用 chromedriver 从 fanfiction.net 上抓取一些故事。 我尝试以下方法:
from selenium import webdriver
import time
path = 'D:\chromedriver\chromedriver.exe'
browser = webdriver.Chrome(path)
url1 = 'https://www.fanfiction.net/s/8832472'
url2 = 'https://www.fanfiction.net/s/5218118'
browser.get(url1)
time.sleep(5)
browser.get(url2)
第一个链接打开(有时我必须等待 5 秒)。当我想加载第二个 url 时,cloudflare 介入并希望我解决验证码 - 这是无法解决的,至少 cloudflare 无法识别这一点。 如果我在 chromedriver 中手动输入链接(所以在 GUI 中),也会发生这种情况。但是,如果我在普通 chrome 中做同样的事情,一切都会正常运行(我什至没有在第一个链接上获得等待期)——即使在私有模式下并且所有 cookie 都已删除。我可以在几台机器上重现这个。 现在我的问题是:根据我的直觉,chromedriver 只是允许控制的普通 chrome 浏览器。与普通 chrome 有什么区别,Cloudflare 如何区分两者,如何将我的 chromedriver 屏蔽为普通 chrome? (我不打算在很短的时间内加载很多页面,所以它不应该看起来像一个机器人)。 我希望我的问题很清楚
【问题讨论】:
-
这是网站上的 bot 检测...(我认为 cloudflare 与它没有什么特别的关系,但网站可以使用的一个功能)不同的是,在一种情况下注入被制作成DOM。该会话可以称为“机器人控制”......验证码永远不会在该会话中解决。如果您手动启动浏览器,该网站不会将您检测为机器人(因为您不是!),如果出现验证码,您可以解决它。 (chromedriver 启动,然后与浏览器交互......它是一个单独的可执行文件,驱动程序和浏览器之间存在 localhost 通信)
标签: python-3.x selenium selenium-chromedriver cloudflare undetected-chromedriver