使用httpwebrequest发送数据到网站

2023-11-15

怎样通过HttpWebRequest 发送 POST 请求到一个网页服务器?例如编写个程序实现自动用户登录,自动提交表单数据到网站等。
假如某个页面有个如下的表单(Form):
<form name="form1" action=" http://www.here.com/login.asp" method="post">
  <input type="text" name="userid" value="">
  <input type="password" name="password" value="">
</form>
    
从表单可看到表单有两个表单域,一个是userid另一个是password,所以以POST形式提交的数据应该包含有这两项。
其中POST的数据格式为:
表单域名称1=值1&表单域名称2=值2&表单域名称3=值3……
要注意的是“值”必须是经过HTMLEncode的,即不能包含“<>=&”这些符号。

本例子要提交的数据应该是:
userid=value1&password=value2

用C#写提交程序:

  string strId = "guest";
  string strPassword= "123456";

  ASCIIEncoding encoding=new ASCIIEncoding();
  string postData="userid="+strId;
  postData += ("&password="+strPassword);

  byte[] data = encoding.GetBytes(postData);

  // Prepare web request...
  HttpWebRequest myRequest =
   (HttpWebRequest)WebRequest.Create(" http://www.here.com/login.asp");

  myRequest.Method = "POST";
  myRequest.ContentType="application/x-www-form-urlencoded";
  myRequest.ContentLength = data.Length;
  Stream newStream=myRequest.GetRequestStream();

  // Send the data.
  newStream.Write(data,0,data.Length);
  newStream.Close();

  // Get response
  HttpWebResponse myResponse=(HttpWebResponse)myRequest.GetResponse();
  StreamReader reader = new StreamReader(response.GetResponseStream(),Encoding.Default);
  string content = reader.ReadToEnd();
  Console.WriteLine(content);
 
 

 使用Visual Sniffer :

这里介绍个工具: Visual Sniffer , google 一下便可轻松找到下载地址。
可以使用 Visual Sniffer 来捕捉提交的数据信息:
1. 访问你需要站外提交的页面,比如 CSDN 登陆页 http://www.csdn.net/member/UserLogin.aspx
2. 填写好需要的资料,比如用户名和密码,
3. 打开 Visual Sniffer, 点“开始拦截”
4. 在访问的页面中提交。
5. 等提交成功之后,在 Visual Sniffer 中“停止拦截”
6. 在 Visual Sniffer 的左侧栏的加号中依次点开,右边是它拦截到的内容,
   找到 内容含有 POST  http://www.csdn.net/member/UserLogin.aspx  的节点
以下是我拦截的内容供参考:

POST http://www.csdn.net/member/UserLogin.aspx HTTP/1.0
Accept: image/gif
, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
Referer: http://www.csdn.net/member/UserLogin.aspx
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
UA-CPU: x86
Pragma: no-cache
User-Agent: Mozilla/
4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; InfoPath.1)
Host: www.csdn.net
Content-Length: 
355
Proxy-Connection: Keep-Alive
Cookie: ASPSESSIONIDAAAATBQC
=FMEGGCKDBKHAMMCGKPFDMBFG; ASP.NET_SessionId=lusprmnom05lr445tmteaf55; userid=699879

__EVENTTARGET
=&__EVENTARGUMENT=&__VIEWSTATE=dDwtMTcwMzgxNjQ2Mjs7bDxDU0ROVXNlckxvZ2luOmNiX1NhdmVTdGF0ZTtDU0ROVXNlckxvZ2luOkltYWdlX0xvZ2luOz4%2Btu1q2wmRZoAJTi9L73w1zBleylY%3D&CSDNUserLogin%3Atb_UserName=testusername&CSDNUserLogin%3Atb_Password=testpassword&CSDNUserLogin%3Atb_ExPwd=9232&from=&CSDNUserLogin%3AImage_Login.x=36&CSDNUserLogin%3AImage_Login.y=6
GET http://www.csdn.net/mycustompage.htm?aspxerrorpath
=/member/UserLogin.aspx HTTP/1.0
Accept: image/gif
, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
Referer: http://www.csdn.net/member/UserLogin.aspx
Accept-Language: zh-cn
UA-CPU: x86
Pragma: no-cache
User-Agent: Mozilla/
4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; InfoPath.1)
Host: www.csdn.net
Proxy-Connection: Keep-Alive
Cookie: ASPSESSIONIDAAAATBQC
=FMEGGCKDBKHAMMCGKPFDMBFG; ASP.NET_SessionId=lusprmnom05lr445tmteaf55; userid=699879

注意:PostData 参数之间是以 " & " 进行 连接的

OK,通过以上简单示例,只要稍微修改下,即可做成多站点自动登陆,或自动网上投票等功能!

such as:

代码如下:

            ASCIIEncoding encoding = new  ASCIIEncoding();
            
string  postData = " TextBox1=33&Button1=Button " ;
            
byte []  data  =  encoding.GetBytes(postData);

            
//  Prepare web request
            HttpWebRequest myRequest  =
                (HttpWebRequest)WebRequest.Create(
" http://localhost/testform1.aspx " );
            myRequest.Method 
=   " POST " ;
            myRequest.ContentType
= " application/x-www-form-urlencoded " ;
            myRequest.ContentLength 
=  data.Length;
            Stream newStream
= myRequest.GetRequestStream();
            
//  Send the data.
            newStream.Write(data, 0 ,data.Length);
            newStream.Close();


解释:
postData 为你要提交的数据
比如 CSDN 的登录页面 http://www.csdn.net/member/UserLogin.aspx
输入用户名密码和校验码,并提交之后,浏览器便将下面的数据提交到服务器:
 

 

CSDNUserLogin%3Atb_UserName = yourName&CSDNUserLogin%3Atb_Password = yourPassword&CSDNUserLogin%3Atb_ExPwd = 2332


其中的 yourName 为你实际登陆时提交的用户名, yourPassword 即为你的密码, 2332 是我刚才登陆时的验证码

参考网址:

http://dev.csdn.net/article/28/28374.shtm
http://www.knowsky.com/18774.html
http://www.netomatix.com/HttpPostData.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用httpwebrequest发送数据到网站 的相关文章

  • 子字符串和 Go 垃圾收集器

    在 Go 中获取字符串的子字符串时 不会分配新的内存 相反 子字符串的底层表示包含一个数据指针 该指针是原始字符串的数据指针的偏移量 这意味着 如果我有一个大字符串并希望跟踪一个小子字符串 则垃圾收集器将无法释放任何大字符串 直到我释放对较
  • 在 String 值之后打印 int 值

    我有以下示例代码 int pay 80 int bonus 65 System out println pay bonus bonus pay 有人可以向我解释一下为什么我得到以下输出 145 6580 您的代码正在从左到右解释表达式 pa
  • 相当于 C# 中的 $_FILES

    C 中 PHP 的 FILES 变量相当于什么 或者至少以相同的方式访问文件 我有一个无法更改的上传表单 需要了解如何获取这些文件 看一眼Request Files 例如 foreach HttpPostedFile item in Req
  • 哈希密码如何解密? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在我的网站中使用盐技术的 SHA1 算法对密码进行哈希处理 有什么办法可以解密密码并恢复原来的密码吗 Hashing不加密 解密 当我们
  • 将 aspx 文件加载到 xmldocument 中

    我希望能够将 aspx 页面加载到 XmlDocument 变量中 我怎么做 这是我尝试过的 它期望 xml 文件而不是 aspx 页面 有没有办法将aspx页面即时转换为xml文档并加载它 谢谢 string filePath C Web
  • Perl:管理 Windows 上的路径编码

    我正在努力处理包含非英文字符的路径 Activestate Perl Windows XP 如何打开 写入 复制等位于包含希腊语 俄语 法语重音字符的路径中的文件 假设我要将 text txt 文件复制到的目录是 C Documents a
  • 将 NSAttributedString 的子字符串替换为另一个 NSAttributedString

    我想替换一个子字符串 例如 replace of an NSAttributedString和另外一个NSAttributedString 我正在寻找一种等效的方法NSString s stringByReplacingOccurrence
  • 在 C# 中,如何根据在 gridview 行中单击的按钮引用特定产品记录

    我有一个显示产品网格视图的页面 该表内有一列 其中有一个名为 详细信息 的超链接 我想这样做 以便如果用户单击该特定产品的详细信息单元格 将打开一个新页面 提供有关该产品的更多信息 我不确定如何确定哪个Product记录链接的详细信息以及我
  • 是否使用 C# 数据集? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 C 中的数据集概念有点困惑 编码 ASP NET 站点 但这并不重要 在我的阅读中 我了解到它们 本质上 用作我的应用程序和我的
  • 如何在嵌套列表视图中编辑数据

    我使用列表视图来显示项目列表 并使用嵌套列表视图来显示每个项目的功能列表 父列表视图和子列表视图都需要能够进行插入 编辑和删除操作 它适用于父列表视图 但是 当我尝试编辑子项目时 编辑按钮不会将其带入编辑模式 您能建议我代码中缺少什么吗
  • 如何从前端将ASP.net dropdownlist索引设置为0

    我在 ASP net 页面中有以下代码
  • ASP.NET AJAX 进度条:从代码隐藏更新?

    我在应用程序中具有 Excel 电子表格的导入功能 目前它使用 FileUpload 控件 我上传文件 然后对该文件运行操作 我想通知用户正在完成的操作以及完成的百分比 我认为我可以获取从 Excel 电子表格中提取的总行数 并在将每条记录
  • 如何将 SQL 结果存入 STRING 变量?

    我正在尝试获取 C 字符串变量或字符串数 组中的 SQL 结果 是否可以 我需要以某种方式使用 SqlDataReader 吗 我对 C 函数和所有功能非常陌生 曾经在 PHP 中工作 所以如果可以的话请给出一个工作示例 如果相关 我已经可
  • 如何分配Profile值?

    我不知道我缺少什么 但我在 Web config 文件中添加了 Profile 属性 但无法访问 Profile Item在代码中或创建一个新的配置文件 我今天也遇到了同样的问题 学到了很多东西 Visual Studio 中有两种项目 网
  • ASP.NET Core - 在 Visual Studio 2015 中通过 Docker 调试时出现问题

    我在 Visual Studio 中使用 Docker 运行基于 ASP NET Core 构建的应用程序时遇到问题 我的应用程序仅使用dnxcore50框架 我的project json 文件是 version 1 0 0 compila
  • aspx页面中的if语句

    我想在我的网站上编写一个基本的 if 语句 以根据变量是否设置为 true 来显示项目 1 或项目 2 我对 NET 不太熟悉 需要一些关于如何让 if 语句在 aspx 页面上工作的基本结构的帮助 如果目的是显示或隐藏页面的一部分 那么您
  • CSS 圆角六边形按钮

    我可以使用 CSS 创建相同的按钮 圆角是重要部位 角是主要原因 带圆角的三角形按钮 请看我下面的代码和图片 lngbtn position relative width 150px height 50px margin 50px colo
  • AsyncTask:DoInBackground(String ...)与DoInBackground(Params ...)冲突?

    当尝试使用时Async task要执行 HTTP post 我得到以下信息 ASyncTask DoInBackground String clashes with DoInBackground Params in Android os A
  • Jquery Ajax 调用返回 403 状态

    我有一个 jquery Ajax 调用来实现会话的 keepalive 这个 keepAlive 方法将每 20 分钟调用一次 function keepAlive ajax type POST url KeepAliveDummy asp
  • 将整数转换为特定格式的十六进制字符串

    我是 python 新手 有以下问题 我需要将整数转换为 6 个字节的十六进制字符串 例如 281473900746245 gt xFF xFF xBF xDE x16 x05 十六进制字符串的格式很重要 int 值的长度是可变的 格式 0

随机推荐

  • 【基础教学】UiBot的下载、安装与使用

    鉴于很多小伙伴 可能刚刚关注UiBot 对这个平台还不是很了解 我们准备系统的讲解UiBot的相关操作 方便您对UiBot的认识与使用 目录 1 UiBot软件简介 2 UiBot能为您做什么 3 系统环境及配置要求 4 下载与安装 5 注
  • 堆排序(几个重点)

    https blog csdn net touch 2011 article details 6767673 几个重点 大小顶堆虽然逻辑形式是完全二叉树 但实际是以数组的形式存储 最后一个非叶子节点 最后一个有孩子的节点 的位置是 n 2
  • linux 获取进程输出流,linux后台进程与标准输出

    一 遇到问题 笔者在测试阶段 把服务拉到服务器上 部署之后 启动服务 但是没有启动成功 也没有报错信息 二 先理解一些概念 1 黑洞 dev null 这个就是黑洞 这是一个文件 这个文件是一个 只写 的文件 从里面读不出信息 为什么要使用
  • Elasticsearch 查询和聚合查询:基本语法和统计数量

    摘要 Elasticsearch是一个强大的分布式搜索和分析引擎 提供了丰富的查询和聚合功能 本文将介绍Elasticsearch的基本查询语法 包括预发查询和聚合查询 以及如何使用聚合功能统计数量 引言 Elasticsearch是一种开
  • C++实现查找字符串中的数字,并输出

    例如输入 dsafjoi3425sfsdjl5435asfkl 3400输出为 3425 5434 3400 include
  • Stata如何快速安装外部命令

    Stata如何快速安装外部命令 来自微信公众号 TidyFridy 1 之前在安装Stata外部命令时 访问外网速度很慢 安装SSC外部命令没有成功 出现过stacktrace not available 的提示 解决办法 Stata的安装
  • 数据结构课程设计-五子棋

    1 题目描述 五子棋的游戏规则是两人对弈 使用黑白两色棋子 轮流下在棋盘上 当一方先在横线 竖线 斜对角线方向形成五子连线 则取得胜利 2 设计要求 在内存中 设计数据结构存储游戏需要的数据 满足五子棋游戏的游戏规则 实现简单的人机对战功能
  • 条款28.理解引用折叠

    理解引用折叠 以下面这个模板为例 template
  • 华为校招机试题-去除多余空格-2023年

    题目描述 去除文本多余空格 但不去除配对单引号之间的多余空格 给出关键词的起始和结束下标 去除多余空格后刷新关键词的起始和结束下标 条件约束 1 不考虑关键词起始和结束位置为空格的场景 2 单词的的开始和结束下标保证涵盖一个完整的单词 即一
  • Pycharm的python console报错“Error running console” “错误:无法启动进程,指定的不是一个工作目录”

    1 依次选择 File 文件 gt setting 设置 gt Build Execution Deployment 构建 执行部署 gt Console gt Python Console找到python console设置 2 设置 1
  • 【简单】HJ14 字符串排序(Python、C++两种语言实现)

    题目 给定 n 个字符串 请对 n 个字符串按照字典序排列 数据范围 1 n 1000 1 n 1000 字符串长度满足 1 len 100 1 len 100 输入描述 输入第一行为一个正整数n 1 n 1000 下面n行为n个字符串 字
  • VsCode连接服务器并编辑服务器端代码

    打开 VsCode 安装 Remote SSH 插件 安装完成后 页面左侧插件下方会出现一个形如电脑的图标 页面右下角也会出现绿色的远程控制的标志 新建SSH连接 选择 远程资源管理器 点击 设置 齿轮状图标 选择配置文件并打开 按照实际信
  • 神经网络五:常用的激活函数

    本文就现在神经网络中主要的几个激活函数进行分析和讲解 比较几个激活函数的优缺点 在此特声明 本文的内容是来自 CS231n课程笔记翻译 神经网络笔记1 上 智能单元 知乎专栏 因本人有时会查阅这些相关的知识点 一直翻文档比较麻烦 特从文档中
  • 利用STM32F103最小系统做C2接口离线烧录器

    前言 在做BLHeli S电调的时候需要用下载器给EFM8BB21下载程序 这可能需要买C8051下载器 下载器下载也很麻烦 这就萌生出做一个C2接口的离线下载器的想法 离线下载器想法 1 支持U盘功能 可以通过USB连接到电脑然后把固件文
  • 数据库中DDL、DQL、DML、DCL、TCL都是什么意思

    结构化查询语言 SQL 是一种数据库语言 DDL DQL DML DCL TCL是数据库语言中的五大类型 1 DDL Data Definition Language DDL是数据定义语言 主要用来定义或者改变表的结构 例如 CREATE
  • The file “xxx” couldn’t be opened because you don’t have permission to view it. You don’t have permi

    问题 Xcode 使用真机编译不报错 运行报如下错误 The file xxx couldn t be opened because you don t have permission to view it You don t have p
  • Py之pdpbox:深度解析Python数据探索库PDPbox

    Py之pdpbox 深度解析Python数据探索库PDPbox PDPbox是一个基于Python的数据探索工具库 可以帮助用户更好地理解数据特征之间的关系以及其对模型性能的影响 该库提供了多种数据可视化和解释工具 方便用户进行快速实验和分
  • python wheel文件

    wheel介绍 whl文件 WHL file 也称为轮子 wheel 这是用于python分发 distribution 的标准内置包格式 standard built package format 它包含安装所需的所有文件和元数据 met
  • 实证研究的步骤_案例研究法

    案例研究法是实地研究的一种 研究者选择一个或几个场景为对象 系统地收集数据和资料 进行深入地研究 用以探讨某一现象在实际生活环境下的状况 比如民族志研究 扎根理论等 可观察也可仅通过资料分析进行研究 适用条件 当现象与实际环境边界不清而且不
  • 使用httpwebrequest发送数据到网站

    怎样通过HttpWebRequest 发送 POST 请求到一个网页服务器 例如编写个程序实现自动用户登录 自动提交表单数据到网站等 假如某个页面有个如下的表单 Form