我有一个正在进行身份验证的网站如下:
Javascript函数:
ajax: function() {
if (!Login.blocked) {
Login.blocked = true;
var fields = Login.getFormData();
ajax('/ajax/login', Login.getResponse, Login.packData(fields));
}
packData: function(obj) {
var data = [];
for (key in obj) {
data.push(key + '=' + obj[key]);
}
篡改数据:
Host=*********
User-Agent=Mozilla/5.0 (Windows NT 6.3; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0
Accept=*/*
Accept-Language=en-US,en;q=0.5
Accept-Encoding=gzip, deflate, br
X-Requested-With=XMLHttpRequest
Content-Type=application/x-www-form-urlencoded
Referer=https://*********/
Content-Length=105
Cookie=utc=0918a5d99a7; _ga=GA1.2.1988660761.1492530049; __gads=ID=4db40c28b6af8254:T=1492530048:S=ALNI_MYCC-8HnoEW3ecRExG9wg9AA9b9mw; XSRF-TOKEN=************************************; _gid=GA1.2.41413306.1493735447; surveymonkey=true; SRV=s2; acceptcookies=true
Connection=keep-alive
POSTDATA=_token=*********&email=*********%40gmail.com&password=*********&=Authentication
正在发送的令牌是登录表单的一部分,并在访问该页面时自动生成:
输入name =“_ token”type =“hidden” 值= “rpt8UZiKGq8ARRvDVEZslU9erqT7Xzmv35F2QjxN”
我正在使用cURL进行测试,我已经完成了100次尝试而没有结果。执行“--dump-header cookie.txt”每次检查结果。
示例:
curl --dump-header cookie.txt -d "_token=4l8bOObleRsquW******&email=******%40gmail.com&password=******&=Authentication" -H "Contenty-Type: application/x-www-form-urlencoded" https://*******/ajax/login/
-H "Contenty-Type: application/x-www-form-urlencoded"
-H "Accept:*/*" -H "X-Requested-With:XMLHttpRequest"
-H "User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0"
-H "Accept: application/json"
还尝试使用格式{"email":"******@gmail.com","password":"******"}
获取数据。
有什么想法吗?
答案 0 :(得分:0)
@for任何想知道的人
所需的令牌实际上是在一个httponly cookie中,所以即使我已经成功,我也无法保证curl能够捕获该cookie。
要解决这个问题,我已经使用COM InternetExplorer.Application在powershell中完成了IE自动化,登录到站点,从磁盘上的cookie文件中提取令牌,在powershell中构造了一个cookie对象,将其添加到了websession并使用该websession调用webrequests / restrequests(全部在powershell中)。
我从不关闭IE(可见= $ false),每隔几分钟刷新一次(即使页面保持活动状态)并从磁盘更新令牌。
-Dizzy