首页 > 解决方案 > 警告:使用 Selenium Chromedriver Python 启用跨站点请求伪造控制错误

问题描述

我无法通过以下方式直接导航到网页driver.get('https://example.com')

该网站显示一条消息:

警告:跨站点请求伪造控制已启用

但是如果我使用 Selenium 的 ActionChains 实现,

ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()

我可以通过网站成功导航到新网页“ https://example.com

我试过保存和恢复cookies。没有成功。

我还需要做什么driver.get()才能导航到网站的不同网页?

标签: python-3.xseleniumwebdriverselenium-chromedrivercsrf

解决方案


跨站请求伪造 (CSRF)

跨站点请求伪造 (CSRF)是一种攻击,它强制最终用户在当前已通过身份验证的 Web 应用程序上执行不需要的操作。CSRF 攻击专门针对状态更改请求,而不是窃取数据,因为攻击者无法查看对伪造请求的响应。借助一些社会工程学的帮助(例如通过电子邮件或聊天发送链接),攻击者可能会诱骗 Web 应用程序的用户执行攻击者选择的操作。如果受害者是普通用户,成功的 CSRF 攻击会迫使用户执行状态更改请求,例如转移资金、更改电子邮件地址等。如果受害者是管理帐户,CSRF 可能会破坏整个 Web 应用程序。

因此,当您将SeleniumActionChains实现用作:

ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()

大概您正在访问一个其他网页,在该网页上建立了一个会话,并且对许多其他会话属性进行了身份验证。在下一步中,您将使用SeleniumActionChains实现来调用click()WebElement 从而将您带到新网页https://example.com

https://example.com但是在您的替代方法中,您试图直接导航到所需会话属性不存在的网页。因此,这种情况下的会话不会建立,您会看到警告为:

Warning: cross-site request forgery control is enabled

解决方案

更简单的解决方案是遵循实际流程,即访问将建立会话并验证所需会话属性的初始网页。在下一步中,您可以使用 Selenium 的 ActionChains 实现来调用click()所需的 WebElement,这会将您带到新网页https://example.com

选择

作为替代方案,您可以创建一个Chrome 配置文件使用指定的Chrome 配置文件来存储SessionAttributes并根据您的要求重复使用。


推荐阅读