基于WebClient实现Http协议的Post与Get对网站进行模拟登陆和浏览实例

 更新时间:2014年11月15日 11:10:40   投稿:shichen2014  
这篇文章主要介绍了基于WebClient实现Http协议的Post与Get对网站进行模拟登陆和浏览的方法,以实例形式详细分析了WebClient模拟POST与GET登陆与浏览的过程,对于C#项目开发来说具有不错的参考借鉴价值,需要的朋友可以参考下

本文实例讲述了基于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#程序设计有所帮助。

相关文章

  • C# 实现Scoket心跳机制的方法

    C# 实现Scoket心跳机制的方法

    这篇文章主要介绍了C# 实现Scoket心跳机制的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • C#读取静态类常量属性和值的实例讲解

    C#读取静态类常量属性和值的实例讲解

    在本篇文章里小编给各位分享的是关于C#读取静态类常量属性和值的实例讲解,有兴趣的朋友们可以学习下。
    2020-03-03
  • C#多线程与异步的区别详解

    C#多线程与异步的区别详解

    多线程和异步操作两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。甚至有些时候我们就认为多线程和异步操作是等同的概念。但是,多线程和异步操作还是有一些区别的。而这些区别造成了使用多线程和异步操作的时机的区别
    2017-06-06
  • C#/VB.NET 在PDF中添加文件包(Portfolio)的方法

    C#/VB.NET 在PDF中添加文件包(Portfolio)的方法

    这篇文章主要介绍了C#/VB.NET 在PDF中添加文件包(Portfolio)的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-06-06
  • C#简单配置类及数据绑定

    C#简单配置类及数据绑定

    这篇文章主要介绍了C#简单配置类及数据绑定,原理比较简单,适用于一些小型项目。主要实现保存配置到json文件、从文件或实例加载配置类的属性值、数据绑定到界面控件的功能,需要的朋友可以参考一下
    2021-11-11
  • C# WPF中RadioButton控件的用法及应用场景

    C# WPF中RadioButton控件的用法及应用场景

    在WPF应用程序中,RadioButton控件是一种常用的用户界面元素,本文主要介绍了C# WPF中RadioButton控件的用法及应用场景,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 详解C# 不能用于文件名的字符

    详解C# 不能用于文件名的字符

    在 Windows 有一些字符是不能作为文件名,尝试重命名一个文件,输入/ 就可以看到windows 提示的不能作为文件名的字符,那么具体是包括哪些符号不能作为文件名呢?下面小编给大家介绍下
    2018-02-02
  • C# 程序集和反射详解

    C# 程序集和反射详解

    本文主要介绍了C# 程序集和反射的相关知识。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • WPF中下拉框可作选择项也可以作为只读文本框使用的方法

    WPF中下拉框可作选择项也可以作为只读文本框使用的方法

    这篇文章主要给大家介绍了关于WPF中下拉框可以选择项也可以作为只读文本框使用的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-02-02
  • WPF实现XAML转图片的示例详解

    WPF实现XAML转图片的示例详解

    这篇文章主要为大家详细介绍了如何利用WPF实现XAML转图片,文中的示例代码讲解详细,对我们学习或工作有一定帮助,感兴趣的小伙伴可以了解一下
    2022-11-11

最新评论