黄聪:C#模拟网站页面POST数据提交表单(二)--HttpWebRequest以及HttpWebResponse (转)

news/2024/5/13 4:34:55/文章来源:https://blog.csdn.net/anlun/article/details/43404401
黄聪:C#模拟网站页面POST数据提交表单(二)--HttpWebRequest以及HttpWebResponse (转)

上次介绍了用WebClient的方式提交POST请求,这次,我继续来介绍用其它一种方式

HttpWebRequest以及HttpWebResponse

自认为与上次介绍的WebClient最大的不同之处在于HttpWebRequest更灵活,也更强大,比如,HttpWebRequest支持Cookie,而WebClient就不支持,因此,如果要登录某个网站才能进行某些操作的时候,HttpWebResponse就派上用场了。

补充:

WebClient是可以操作Cookie的,因为 Cookie本质上就是个字符串,只要服务器返回的头是“SetCooie:xxx”,所以,按照返回的格式做下处理(不能原样返回,具体可以抓包分析下 格式),存起来,然后在HTTP请求头上加上“Cookie:xxx”即可

首先要提下Referer还有Cookie

Referer:就是一般在浏览器中发送Http请求时带的头信息,被广泛用来统计点击信息,即从那个点击而来,所以有些网站也会用这个性质来防盗链,很多时候如果什么图片仅限内部交流之类的,就是用了这个原理。

Cookie:某些网站为了辨别用户身 份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密),通常大家登录的时候就要用到它,登录后,网站会储存一个Cookie的东西在 本地计算机上,然后每次访问网站时,便会把这个网站的Cookie也一并发送过去,服务器就凭借这个来确认你的身份。它是个重要信息,有些黑客也会通过盗 取Cookie的方式来侵入你的账户。


好了,现在开始具体说明:

复制代码
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("POST请求的地址");  request.CookieContainer = new CookieContainer();  CookieContainer cookie = request.CookieContainer;//如果用不到Cookie,删去即可  //以下是发送的http头,随便加,其中referer挺重要的,有些网站会根据这个来反盗链  request.Referer = “http://localhost/index.php”;  request.Accept = "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";  request.Headers["Accept-Language"] = "zh-CN,zh;q=0.";  request.Headers["Accept-Charset"] = "GBK,utf-8;q=0.7,*;q=0.3";  request.UserAgent = "User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1";  request.KeepAlive = true;  //上面的http头看情况而定,但是下面俩必须加  request.ContentType = "application/x-www-form-urlencoded";  request.Method = "POST";  Encoding encoding = Encoding.UTF8;//根据网站的编码自定义  byte[] postData = encoding.GetBytes(postDataStr);//postDataStr即为发送的数据,格式还是和上次说的一样  request.ContentLength = postData.Length;  Stream requestStream = request.GetRequestStream();  requestStream.Write(postData, 0, postData.Length);  HttpWebResponse response = (HttpWebResponse)request.GetResponse();  Stream responseStream = response.GetResponseStream();  //如果http头中接受gzip的话,这里就要判断是否为有压缩,有的话,直接解压缩即可  if (response.Headers["Content-Encoding"] != null && response.Headers["Content-Encoding"].ToLower().Contains("gzip"))  {  responseStream = new GZipStream(responseStream, CompressionMode.Decompress);  }  StreamReader streamReader = new StreamReader(responseStream, encoding);  string retString = streamReader.ReadToEnd();  streamReader.Close();  responseStream.Close();  return retString;  
复制代码

 

当然,请注意,我只是把知识与大家分享,不是让大家去做损害他人网站的事。

反过来,作为Web开发人员,也要明白,不能相信客户端发送来的数据总是合法的,也不能以为他人只能通过浏览器来访问网站,上面就是个例子

而作为防范,验证码之类的可以防范大部分人了~只是,也别以为有了验证码就能防住所有人了,欲知后事如何,请听下回分解~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_877783.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黄聪:C#模拟网站页面POST数据提交表单(一)--WebClient (转)

黄聪:C#模拟网站页面POST数据提交表单(一)--WebClient (转) C#的提交表单方式主要有两种WebClient与HttpWebRequest,这里先介绍一种 WebClient,转送门:http://msdn.microsoft.com/zh…

搭建基于github的个人网站

注: 1. 没写完,持续更新。 2. 有些条目写的顺序可能会有点奇怪,比如说我可能写完给博客换主题,然后写了买域名,又突然觉得换主题那块要再加一些内容,所以看上去可能我还没讲到买域名,但是自己…

[网站动态]年轻态SNS席卷台湾

年轻态SNS席卷台湾 年轻态SNS,个人感觉,比BOKEE这种的距离赢利更为接近。这次的文章来自于台湾 BLOGGER(Jason Chiang),分析的很是透彻,结合我的文章,让我们再度思考年轻态SNS的盈利&#xff0c…

提升网站性能开发的10个技巧

摘要:随着网络的高速发展,网络性能的持续提高成为能否在芸芸App中脱颖而出的关键。高度联结的世界意味着用户对网络体验提出了更严苛的要求。文中为大家总结10条有关性能提升的经验。 随着网络的高速发展,网络性能的持续提高成为能否在芸芸Ap…

《SparkStreaming 2》--UpdateStateByKey操作、spark-submit提交、网站日志案例(禁止爬虫、transform和join连接、网站的UV访问数、窗口操作PV)

UpdateStateByKey操作(按照key更新状态) 其它案例都是之前spark用到过的,以下是特殊RDD (之前案例统计的是5秒内的总次数,并不是wordcount的总次数,此Rdd可以统计整个流 流过的内容的wordcount总次数) 该updateStateByKey操作允许您在使用新信息不断更新时保持任…

js事件中的onmouseout和onmouseleave

写一个项目的过程中发现一个问题: 鼠标监听A元素的onmouseout事件,结果当鼠标移到A元素里面的B元素时,事件也触发了。 原因是因为:事件冒泡。 当鼠标从A元素进入到B元素时,A也会触发自己的onmouseout事件&#xff0…

2022百度收录方法-顺鑫说seo

今年已经是2022年头了,现在百度是一个怎样的形式呢,好多人都在吐槽,也有很多默默无闻的人。 我自认为我是一个很有想法的人。但是我不认为我是一个聪明的人。 后来的我明白,时间和实践才是检验真理的唯一标准。 我们一定要多看&am…

网站设计流程

以理论的角度: 使用NoahWeb进行网站开发,您可以将开发过程分为三个阶段:需求阶段、实现阶段、以及发布阶段。在三个阶段中,您同样可做到始终探索用户需求,多次将DEMO交付客户进行演示,网站开发中由于NoahW…

负载测试—网站的“体能”测试

通常来说,负载测试可以采用手动和自动两种方式。手动测试会遇到很多问题,如无法模拟太多用户、测试者很难精确记录相应时间、连续测试和重复测试的工作量特别大等。因此对于负载测试,手动方式通常用于初级的负载测试。目前,绝大多…

如何查看网站的端口

转:http://jingyan.baidu.com/article/4dc40848be2fd2c8d946f1a0.html 本文教您: 1,网站的域名和端口是什么含义 2,网站的端口到底有哪些 方法/步骤 1 通俗化解释什么是网站的端口,特别实用。 ---------------------------------…

ubuntu网站服务器环境搭建

转账自:ubuntu网站服务器搭建 如果想用Ubuntu作为网站的服务器,一些基本的服务是必备的。本文对环境的搭建做一个简单的整理。 Appach Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和…

WordPress 网站漏洞扫描 wpscan Kali Linux

在 WordPress 网站漏洞扫描,我将向你展示一些有用的命令 , 我们可以使用在 wpscan 搜索已知的漏洞在 wordpress 博客。 打开终端 , 使用下面的命令以启动对目标 wpscan WordPress 网站。 使用 wpscan --url blog.tld (更换 blog.tld 域与要扫描的漏洞。…

linux获取网站的响应时间

一个简易的抓包脚本 ----- url_check.sh ----- if ! [ $# -eq 1 ] then echo "Usage For example:" echo "$0 www.yy.com" exit -1 fi domain$1 echo "输入URL:"$domain echo "" echo "开始curl检测:" cu…

Git 分支 - 分支的新建与合并 分支的新建与合并 让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流。 你将经历如下步骤: 开发某个网站。 为实现某个新的需求,创

Git 分支 - 分支的新建与合并 分支的新建与合并 让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流。 你将经历如下步骤: 开发某个网站。 为实现某个新的需求,创建一个分支。 在这个分支上开展工作。 正…

怎样得到一个清爽干净简洁的CSDN文章页面?开源一个小插件,可自由定制用于其他网站。【含视频教程】

!!!想直接看视频教程的请点这里!!! 一、原版CSDN文章页面与清爽版对比 1.1 原版CSDN文章页面 原版页面分了三次截图还没截全: 1.2 清爽版CSDN文章页面 二、忍不住吐槽一下CSDN(…

360浏览器访问https网站直接跳转 se://error/ 或者se://errorpage/问题(无法打开网站,网页走丢了)解决方法

最近发现360浏览器访问某个https://网站直接跳转 se://error/ 或者se://errorpage/具体如下 用其他浏览器,例如chrome就可以正常访问那个https网站。所以问题出在浏览器这块了。经过查询资料和测试发现,这个问题的正确解决办法有两个 1、如果安装了IE8等…

iptables+shell防御网站

1.简易搭建一个web服务器 2.分析访问HTTP的日志,目录在 /var/log/httpd/access_log 3.根据网站一分钟之内的访问量来判断,限制IP过多访问,所以要设置时间变量来控制时间。先通过awk进行日志筛选出符合条件的ip,然后通过iptabl…

使用tomcat和mybatis模拟在线人数统计和网站的访问量

思路 使用一个文件来存储网站的总访问量(在这里时以键值对的形式来存储 比如count0 然后通过一个properties通过count去获取值也就是访问量),每登陆网站一次就让文件存储的时加一 用setArrtibute 方法给我们需要展示在页面的总访问量赋值 每…

如何利用客户端缓存对网站进行优化?

介绍 你的网站在并发访问很大并且无法承受压力的情况下,你会选择如何优化? 很多人首先会想从服务器缓存方面着手对程序进行优化,许多不同的服务器缓存方式都有他们自己的特点,像我曾经参与的一些项目中,根据缓存的命中率不同使用过 Com/Enterprise Libiary Caching/W…

资源全部到位但是网站渲染不了的原因

1、用nodejs写的网站所有资源都到位,但是页面不被渲染 2、在网上找了很久都没找到原因,最后发现是页面请求js、css等的type为html(即:Content-Type:text/html),导致js、css被当做html来解析&am…