开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 508|回复: 3
收起左侧

[求助] 求教关于 XMLHttpRequest 请求问题

[复制链接]
结帖率:100% (6/6)
发表于 2023-8-29 12:03:36 | 显示全部楼层 |阅读模式   重庆市重庆市
遇到一个逆向中遇到的js的问题,代码如下
"4BWe": function(t, e, r) {        "use strict";        var n = r("axmY")          , o = r("1AW6")          , i = r("RZLI")          , a = r("bnxE")          , u = r("40nR")          , s = r("1vI4");        t.exports = function(t) {            return new Promise((function(e, c) {                var f = t.data                  , d = t.headers;                n.isFormData(f) && delete d["Content-Type"];                var l = new XMLHttpRequest;                if (t.auth) {                    var h = t.auth.username || ""                      , p = t.auth.password || "";                    d.Authorization = "Basic " + btoa(h + ":" + p)                }                if (l.open(t.method.toUpperCase(), i(t.url, t.params, t.paramsSerializer), !0),                l.timeout = t.timeout,                l.onreadystatechange = function() {                    if (l && 4 === l.readyState && (0 !== l.status || l.responseURL && 0 === l.responseURL.indexOf("file:"))) {                        var r = "getAllResponseHeaders"in l ? a(l.getAllResponseHeaders()) : null                          , n = {                            data: t.responseType && "text" !== t.responseType ? l.response : l.responseText,                            status: l.status,                            statusText: l.statusText,                            headers: r,                            config: t,                            request: l                        };                        o(e, c, n),                        l = null                    }                }                ,                l.onerror = function() {                    c(s("Network Error", t, null, l)),                    l = null                }                ,                l.ontimeout = function() {                    c(s("timeout of " + t.timeout + "ms exceeded", t, "ECONNABORTED", l)),                    l = null                }                ,                n.isStandardBrowserEnv()) {                    var v = r("btti")                      , m = (t.withCredentials || u(t.url)) && t.xsrfCookieName ? v.read(t.xsrfCookieName) : void 0;                    m && (d[t.xsrfHeaderName] = m)                }                if ("setRequestHeader"in l && n.forEach(d, (function(t, e) {                    "undefined" === typeof f && "content-type" === e.toLowerCase() ? delete d[e] : l.setRequestHeader(e, t)                }                )),                t.withCredentials && (l.withCredentials = !0),                t.responseType)                    try {                        l.responseType = t.responseType                    } catch (y) {                        if ("json" !== t.responseType)                            throw y                    }                "function" === typeof t.onDownloadProgress && l.addEventListener("progress", t.onDownloadProgress),                "function" === typeof t.onUploadProgress && l.upload && l.upload.addEventListener("progress", t.onUploadProgress),                t.cancelToken && t.cancelToken.promise.then((function(t) {                    l && (l.abort(),                    c(t),                    l = null)                }                )),                void 0 === f && (f = null),                l.send(f)            }            ))        }    }



调试数据显示,                          
n = {
                            data: t.responseType && "text" !== t.responseType ? l.response : l.responseText,                            status: l.status,                            statusText: l.statusText,                            headers: r,                            config: t,                            request: l                        };这个是把返回的response.text,status数据赋值给n,实际抓包数据显示,返回的response.headers里包括了多个  set-cookies,导致该请求一发送,我的cookies就会变化。




请问在上面的这段代码里,如何修改可以让 请求正常发送和返回,但是让我的cookies不变(让这个set-cookies失效之类的)
我尝试直接如下修改但是失败了,cookies依然变化了(被返回的set-cookies改了)。
n = {
                            data: '',{"success":true"}                            status: l.status,                            statusText: l.statusText,                            headers: '{'content-type':"application/json;charset=UTF-8"}',
                            config: t,                            request: l                        };


然后我尝试这样修改
n.request.response.responseText
但是报错,原因是XMLHttpRequest 对象的 response 属性是只读的,不能修改。


另外一点就是返回数据头里的 set-cookies字段是 httponly的,






请问各位,如何修改可以让 请求正常发送和返回,但是让我的cookies不变(让这个set-cookies失效)




结帖率:100% (6/6)
 楼主| 发表于 2023-8-29 12:06:07 | 显示全部楼层   重庆市重庆市
代码格式错了,我发在这里
[JavaScript] 纯文本查看 复制代码
"4BWe": function(t, e, r) {
        "use strict";
        var n = r("axmY")
          , o = r("1AW6")
          , i = r("RZLI")
          , a = r("bnxE")
          , u = r("40nR")
          , s = r("1vI4");
        t.exports = function(t) {
            return new Promise((function(e, c) {
                var f = t.data
                  , d = t.headers;
                n.isFormData(f) && delete d["Content-Type"];
                var l = new XMLHttpRequest;
                if (t.auth) {
                    var h = t.auth.username || ""
                      , p = t.auth.password || "";
                    d.Authorization = "Basic " + btoa(h + ":" + p)
                }
                if (l.open(t.method.toUpperCase(), i(t.url, t.params, t.paramsSerializer), !0),
                l.timeout = t.timeout,
                l.onreadystatechange = function() {
                    if (l && 4 === l.readyState && (0 !== l.status || l.responseURL && 0 === l.responseURL.indexOf("file:"))) {
                        var r = "getAllResponseHeaders"in l ? a(l.getAllResponseHeaders()) : null
                          , n = {
                            data: t.responseType && "text" !== t.responseType ? l.response : l.responseText,
                            status: l.status,
                            statusText: l.statusText,
                            headers: r,
                            config: t,
                            request: l
                        };
                        o(e, c, n),
                        l = null
                    }
                }
                ,
                l.onerror = function() {
                    c(s("Network Error", t, null, l)),
                    l = null
                }
                ,
                l.ontimeout = function() {
                    c(s("timeout of " + t.timeout + "ms exceeded", t, "ECONNABORTED", l)),
                    l = null
                }
                ,
                n.isStandardBrowserEnv()) {
                    var v = r("btti")
                      , m = (t.withCredentials || u(t.url)) && t.xsrfCookieName ? v.read(t.xsrfCookieName) : void 0;
                    m && (d[t.xsrfHeaderName] = m)
                }
                if ("setRequestHeader"in l && n.forEach(d, (function(t, e) {
                    "undefined" === typeof f && "content-type" === e.toLowerCase() ? delete d[e] : l.setRequestHeader(e, t)
                }
                )),
                t.withCredentials && (l.withCredentials = !0),
                t.responseType)
                    try {
                        l.responseType = t.responseType
                    } catch (y) {
                        if ("json" !== t.responseType)
                            throw y
                    }
                "function" === typeof t.onDownloadProgress && l.addEventListener("progress", t.onDownloadProgress),
                "function" === typeof t.onUploadProgress && l.upload && l.upload.addEventListener("progress", t.onUploadProgress),
                t.cancelToken && t.cancelToken.promise.then((function(t) {
                    l && (l.abort(),
                    c(t),
                    l = null)
                }
                )),
                void 0 === f && (f = null),
                l.send(f)
            }
            ))
        }
    },
回复 支持 反对

使用道具 举报

结帖率:100% (6/6)
 楼主| 发表于 2023-8-29 12:06:55 | 显示全部楼层   重庆市重庆市
[JavaScript] 纯文本查看 复制代码
 l.onreadystatechange = function() {
                    if (l && 4 === l.readyState && (0 !== l.status || l.responseURL && 0 === l.responseURL.indexOf("file:"))) {
                        var r = "getAllResponseHeaders"in l ? a(l.getAllResponseHeaders()) : null
                          , n = {
                            data: t.responseType && "text" !== t.responseType ? l.response : l.responseText,
                            status: l.status,
                            statusText: l.statusText,
                            headers: r,
                            config: t,
                            request: l
                        };
                        o(e, c, n),
                        l = null
                    }
                }
回复 支持 反对

使用道具 举报

结帖率:100% (13/13)
发表于 2023-11-20 18:38:21 | 显示全部楼层   广东省中山市
这是一个医院的请求
回复 支持 反对

使用道具 举报

  高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表