首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >欺骗xmlhttprequest (greasemonkey)

欺骗xmlhttprequest (greasemonkey)
EN

Stack Overflow用户
提问于 2015-06-28 12:07:32
回答 1查看 562关注 0票数 0

我正在阻止一个XMLHttpRequest从greasemonkey,但页面错误时,它没有得到响应。所以我试着欺骗,好像收到了回应一样。无意中,似乎XMLHttpRequest的字段是只读的。所以我创建了一个假对象:

代码语言:javascript
复制
fakeresponse = "for (;;);"+JSON.stringify(fakeresponse);


var xhr2 = {};
xhr2.readyState = 0;
if(xhr.onreadystatechange!==undefined) xhr.onreadystatechange.call(xhr2);
xhr2.readyState = 1;
if(xhr.onreadystatechange!==undefined) xhr.onreadystatechange.call(xhr2);
xhr2.readyState = 2;
if(xhr.onreadystatechange!==undefined) xhr.onreadystatechange.call(xhr2);
xhr2.readyState = 3;
if(xhr.onreadystatechange!==undefined) xhr.onreadystatechange.call(xhr2);
xhr2.response = fakeresponse;
xhr2.responseText = fakeresponse;
xhr2.responseXML = fakeresponse;
xhr2.status = 200;
xhr2.readyState = 4;

if(xhr.onreadystatechange!==undefined) xhr.onreadystatechange.call(xhr2);

目标是:

代码语言:javascript
复制
Object {response: "for (;;);{"__ar":1,"payload":{"actions":[{"..."},"bootloadable":{},"ixData":{},"lid":"0"}", responseText: "for (;;);...", responseXML: "for (;;);....", status: 200, readyState: 4}

但什么都没发生..。还有其他方法可以模拟这个吗,或者我必须深入到调试器中去?另外,页面使用的是库而不是纯的xhr对象,这会是一个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-28 13:04:16

代码语言:javascript
复制
(function(xhr, value){
Object.defineProperty(xhr, "response", {
  get: function() {
    return value;
  }
});

Object.defineProperty(xhr, "responseText", {
  get: function() {
    return value;
  }
});

Object.defineProperty(xhr, "responseXML", {
  get: function() {
    return value;
  }
});
Object.defineProperty(xhr, "status", {
  get: function() {
    return 200;
  }
});
})(xhr, fakeresponse);

Object.defineProperty(xhr, "readyState", {
  get: function() {
    return 4;
  }
});

if(xhr.onreadystatechange!==undefined) xhr.onreadystatechange();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31099607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档