本文实例讲述了基于WebClient实现Http协议的Post与Get对网站进行模拟登陆和浏览的方法。分享给大家供大家参考。具体分析如下:
一、问题:
我们在一些场合经常需要模拟浏览器进行一些操作,比如模拟投票,或者模拟点击,或者Web游戏外挂。
二、解决方法:
C#中封装好的WebClient可以在某些要求不算高的场景实现Http的Post和Get。具体请见如下代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net;namespace TestCNM { public class WebClientExt { public string Get(string Url,string Referer, Encoding Encoder,ref string CookieStr) { string result = ""; WebClient myClient = new WebClient(); myClient.Headers.Add("Accept: */*"); myClient.Headers.Add("User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET4.0E; .NET4.0C; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; SE 2.X MetaSr 1.0)"); myClient.Headers.Add("Accept-Language: zh-cn"); myClient.Headers.Add("Content-Type: multipart/form-data"); myClient.Headers.Add("Accept-Encoding: gzip, deflate"); myClient.Headers.Add("Cache-Control: no-cache"); if (CookieStr != "") { myClient.Headers.Add(CookieStr); } myClient.Encoding = Encoder; result = myClient.DownloadString(Url); if (CookieStr == "") { CookieStr = myClient.ResponseHeaders["Set-Cookie"].ToString(); CookieStr = GetCookie(CookieStr); } return result; } public string Post(string Url, string Referer, Encoding Encoder, ref string CookieStr, string Data) { string result = ""; WebClient myClient = new WebClient(); myClient.Headers.Add("Accept: */*"); myClient.Headers.Add("User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET4.0E; .NET4.0C; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; SE 2.X MetaSr 1.0)"); myClient.Headers.Add("Accept-Language: zh-cn"); myClient.Headers.Add("Content-Type: multipart/form-data"); myClient.Headers.Add("Accept-Encoding: gzip, deflate"); myClient.Headers.Add("Cache-Control: no-cache"); if (CookieStr != "") { myClient.Headers.Add(CookieStr); } myClient.Encoding = Encoder; result = myClient.UploadString(Url, Data); if (CookieStr == "") { CookieStr = myClient.ResponseHeaders["Set-Cookie"].ToString(); CookieStr = GetCookie(CookieStr); } return result; } private string GetCookie(string CookieStr) { string result = ""; string[] myArray = CookieStr.Split(','); if (myArray.Count() > 0) { result = "Cookie: "; foreach (var str in myArray) { string[] CookieArray = str.Split(';'); result += CookieArray[0].Trim(); result += "; "; } result = result.Substring(0, result.Length - 2); } return result; } } }
希望本文所述对大家的C#程序设计有所帮助。
这一节会讲讲如何模拟登陆。 模拟登陆是爬虫中非常常见的场景,网络上的数据有些是打开就看得到的,比如腾讯新闻、拉勾网等,有些是需要登录才可见的,比如上一节说的知乎首页,点评评论翻页等等。所以模拟登录时非常常见的一种数据获取手段。 模拟登陆一般有两种方法: 手动 自动 比如模拟登陆知乎,我们可以先打开知乎首页,然后输入我们自己的账号密码,打开控制台,将其中的cookies复制下来,完成业务操作。 我们
本文向大家介绍使用C#发送Http请求实现模拟登陆实例,包括了使用C#发送Http请求实现模拟登陆实例的使用技巧和注意事项,需要的朋友参考一下 模拟登陆的原理很简单,就是发送一个Http 请求服务器获得响应,然后客户端获取到cookie即可实现模拟登陆,比如一些抢票软件的原理无非也是这样模拟客户端的cookie 然后发送请求去抢票,然后12306 本文将演示如何用C# 来实现模拟登陆的,推荐一款工
这一节中我们会继续介绍下 Web 开发中的一些基础知识,包括常用术语、HTTP 协议、URL 的组成部分,以及网站运行原理和开发的流程。只有理解了这些基础知识,才能继续后续的 Django 学习。 1. Web 服务中的常用术语 在正式开始 Django 项目开发之前,我们需要掌握一些 Web 开发中常见的术语。Web 服务和网站在某种程度上是等价的,因此后面描述时并不区分这两个概念。 客户端:用
本文向大家介绍基于jQuery Easyui实现登陆框界面,包括了基于jQuery Easyui实现登陆框界面的使用技巧和注意事项,需要的朋友参考一下 效果图 CSS HTML 以上所述是小编给大家介绍的基于jQuery Easyui实现登陆框界面,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持!
本文向大家介绍基于Python模拟浏览器发送http请求,包括了基于Python模拟浏览器发送http请求的使用技巧和注意事项,需要的朋友参考一下 1.使用 urllib2 实现 2.使用 requests 模块 (1).get请求 (2).post请求 (3).使用session对象的写法 3.其他的一些请求方式 >>> r = requests.put("http://httpbin.org/
本文向大家介绍PHP使用CURL实现对带有验证码的网站进行模拟登录的方法,包括了PHP使用CURL实现对带有验证码的网站进行模拟登录的方法的使用技巧和注意事项,需要的朋友参考一下 网上的很多模拟登录程序,大都是通过服务程序apache之类的运行,获取到验证码之后显示在网页上,然后填上再POST出去,这样虽然看起来很友好,但是既然模拟登录,登录后所干的事情就不一定是短时间完成的,所以这就要受到php