我有一个表格里面有一个隐藏的-csrf字段。该值是一个随机生成的数字,每次点击页面时都会发生变化。我做了大量的阅读和测试,我的尝试都失败了。人们似乎已经克服了php的类似问题,但是我希望从命令行来解决这个问题,所以我正在寻找一个shell脚本解决方案,或者python中的解决方案,我可以从命令行调用它。在
在登录到表单后,它将创建一个cookie,我需要在以后的后续POST命令中引用它。在
失败的脚本示例:
#!/bin/bash
urloutput=$(curl -c ./curlcookie https://foo.com/login)
echo -e "$urloutput"
csrf=$(echo -c "$urloutput" | sed 's/.*csrf" value="//' | sed 's/"><p class=".*//')
echo -e "$csrf"
curl -b ./curlcookie -X POST -d username=user -d password=pw -d _csrf=$csrf https://foo.com/login/attempt
我试过上面剧本的许多变体。我尝试了/login
和/login/attempt
(表单的post位置)。我也尝试过-F
而不是-d
,还有{-c
和{Forbidden, invalid csrf token.
。所以问题是,如何获得csrf值并使用同一会话提交它。我在手册页上没有发现任何特别的东西。我是怎么做到这一点的?在
表单看起来是:
^{pr2}$我还注意到,如果我在chrome inspector中编辑了∗csrf值,然后提交,那么我得到的响应与从失败的curl
命令得到的响应类似。在
卷曲可能不够?如何使用Python实现它?
在尝试提交时,登录尝试似乎得到了不同的csrf。即使我查看cookie中的值并尝试使用它,也会发生这种情况。第二个命令有自己的csrf。我打开我的请求,让它可以由shell运行,也可以通过python运行,就像我可以从shell调用python一样。关键是,如果使用python,那么我需要一种方法来获取所创建的cookie,以便在发布后使用curl,或者在登录后在python脚本中执行顺序POST命令。在
目前没有回答
相关问题 更多 >
编程相关推荐