最近因为一些原因,需要收集一些知乎的数据进行分析。但当实际操作时却发现遇到了种种问题.首当其冲的就是知乎的反爬机制.最初我的思路是先手动登录,然后提取并存放cookie信息到本地以方便以后使用.然后重新打开后再读取cookie然后刷新页面,结果遇到了和这篇博文一样的情况.

虽然能成功登录和访问问答,但当我获取搜索结果和点击展开评论时会报错. 经过一段时间的查阅和尝试后写下了这篇博客.
最初的思路:
不完整代码如下:
driver.get('https://www.zhihu.com')
# 暂停程序执行,等待一段时间(60秒),以确保网页加载完全
time.sleep(30)
# 获取当前页面的所有 cookie 信息,并将其存储为字典
dictCookies = driver.get_cookies()
# 将字典形式的 cookies 转换成 JSON 格式的字符串
jsonCookies = json.dumps(dictCookies)
print(jsonCookies)
# 将 JSON 格式的 cookies 写入到名为 "cookies_juejin.json" 的文件中
with open("cookies_zhihu.json", "w") as fp:
fp.write(jsonCookies)
# 关闭浏览器
driver.quit()
# 创建一个 Firefox 浏览器的实例
browser = webdriver.Firefox(options=options)
# 打开指定网页
browser.get("https://www.zhihu.com")
# 删除当前浏览器中的所有 cookie 信息
# browser.delete_all_cookies()
# 从名为 "cookies_juejin.json" 的文件中读取之前保存的 JSON 格式的 cookies
# with open('cookies_zhihu.json', 'r', encoding='utf-8') as f:
# listCookies = json.loads(f.read())
# # 将读取到的 cookies 添加到当前浏览器中
# for cookie in listCookies:
# browser.add_cookie(cookie)
# 再次访问网页,这次将包含之前保存的 cookie 信息,实现自动登录
browser.refresh()
使用Selenium来登录知乎,然后将获取到的cookies保存到一个JSON文件中,以便后续使用。在浏览器刷新时加载这些cookies,以实现自动登录。然而会遇到之前所说的那种问题,开始思考是哪里被发现了.
被发现的原因
经过查阅后发现, Selenium容易被检测的主要原因在于它所创建的浏览器指纹与手动操作所创建的浏览器指纹不同。一个常见的检测方法是通过检查window.navigator.web
427



被折叠的 条评论
为什么被折叠?



