javascript - 访问不需要登录的网站时,CSRF 检查失败是什么原因?
问题描述
我是网络爬虫和 HTML 的新手。我正在尝试获取此站点的内容: https://services.ecourts.gov.in/ecourtindiaHC/cases/s_orderdate.php?state_cd=24&dist_cd=1&court_code=1&stateNm=Sikkim 但出现一些错误。
session = requests.Session()
path =
'https://services.ecourts.gov.in/ecourtindiaHC/cases/s_orderdate.php?
state_cd=24&dist_cd=1&court_code=1&stateNm=Sikkim'
r2n = session.post(path)
r2n.content
错误:
<html>
<head>
<title>CSRF check failed</title>
<script type="text/javascript">var csrfMagicToken = "sid:c5118ae8a9e61592d303891cc2cd269c204972a8,1563237610";var csrfMagicName = "__csrf_magic";</script><script src="csrf-magic.js" type="text/javascript"></script>
</head>
<body>
CSRF check failed. Please enable cookies.<br />Debug: <script type="text/javascript">CsrfMagic.end();</script>
</body>
</html>
解决方案
CSRF 阻止用户使用相同的令牌从他们自己的网站会话之外发出请求。您可能正在提交在浏览器会话中生成的某种形式的令牌,然后从另一台设备发出请求。更多关于 CSRF 的信息在这里。
CSRF 是一种欺骗受害者提交恶意请求的攻击。它继承受害者的身份和特权,代表受害者执行不受欢迎的功能。对于大多数站点,浏览器请求会自动包含与站点关联的任何凭据,例如用户的会话 cookie、IP 地址、Windows 域凭据等。因此,如果用户当前通过了站点的身份验证,站点将无法区分受害者发送的伪造请求和受害者发送的合法请求。
从本质上讲,它认为您的请求是恶意的人,让您从他们的计算机上拨打电话。
鉴于错误消息:CSRF check failed. Please enable cookies.
,我觉得此令牌存储在 cookie 中。以下是我将如何解决这个问题:
- 打开 chrome 开发者控制台
- 打开网络选项卡
- 重新加载页面
- 右键单击主页的请求
- 鼠标点击“复制”,然后在侧边下拉选择“复制为cURL”
- 转到https://curl.trillworks.com并输入您的 cURL 命令以获取将发出相同请求的 python 请求程序。
推荐阅读
- python - 对不同列之间的最高值输出进行分类
- jenkins - 通过命令提示符执行时,py.test' 不被识别为内部或外部命令、可运行程序或批处理文件
- loops - 如何在 Ansible uri 模块中使用正确的循环
- flutter - 当我多次访问屏幕时出现“状态不佳:流已被收听”
- android - 将 OSS Licenses Gradle Plugin 的主页指示器替换为关闭图标
- c++ - 根据 C++ 中同一列中 2 行的比较,删除 2D std::vector 中的列
- oracle - ORA-29283: invalid file operation: unexpected "LFI" error
- asp.net-core - Create folders in wwwroot on startup in NetCore
- sql - Adding a dot in a string in sql
- react-native - 在警报中按下时如何导航