基于WebClient实现Http协议的Post与Get对网站进行模拟登陆和浏览实例
作者:shichen2014 发布时间:2022-06-24 08:07:48
本文实例讲述了基于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#程序设计有所帮助。
猜你喜欢
- spring-retry是什么?spring-retry是spring提供的一个重试框架,原本自己实现的重试机制,现在spring帮封装好提
- 本文实例为大家分享了用JavaMail发送HTML模板邮件的具体代码,供大家参考,具体内容如下依赖<dependency>&nb
- 一、项目概述之前有不少粉丝私信我说,能不能用Android原生的语言开发一款在手机上运行的游戏呢?说实话,使用java语言直接开发游戏这个需
- 前言本文是精讲RestTemplate第7篇,前篇的blog访问地址如下:RestTemplate在Spring或非Spring环境下使用精
- 本文实例总结了Android开发中Toast显示消息的方法。分享给大家供大家参考,具体如下:Android中提供一种简单的Toast消息提示
- 前言在项目开发中,日志系统是必不可少的,用AOP在Web的请求做入参和出参的参数打印,同时对异常进行日志打印,避免重复的手写日志,完整案例见
- 目录MultipartFile转FileFile转MultipartFile PS:file转base64字符串Multipart
- 返回Json实体类属性大小写问题总归上述问题Rt,其实今天开发刚遇到,当时找了半天为啥前台传参后台却接收不到,原来是返回的时候返回小写,但是
- JAVA操作XML文档主要有四种方式,分别是DOM、SAX、JDOM和DOM4J,DOM和SAX是官方提供的,而JDOM和DOM4J则是引用
- instanceof判断某个对象是否是某个类的实例或者某个类的子类的实例。它的判断方式大概是这样的:public<T> bool
- 可以指定编码如:utf-8来写入和读取文件。如果文件编码未知,可以通过该方法先得到文件的编码后再指定正确的编码来读取,否则会出现文件乱码问题
- 前言在这一期的文章中,我将继续介绍 Either,使用它构建树形结构,该结构允许我模拟 Scala 的模式匹配来构建遍历方法。在 Java
- SharedPreferences介绍:SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置
- #include <stdio.h>#include <stdlib.h>int main(){ &nbs
- import java.io.File; public class ShowAllXML { public static void main
- 一. 依赖管理Ⅰ. 部分dependency导入时为啥不需要指定版本?我们创建项目时添加的依赖并没有帮我们指定版本号<>,那Sp
- Java 使用IO流实现大文件的分割与合并文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一
- 1.汉诺塔介绍汉诺塔规则1.有三根杆子A,B,C。A杆上有若干碟子2.每次移动一块碟子,小的只能叠在大的上面3.把所有碟子从A杆全部移到C杆
- [LeetCode] 2. Add Two Numbers 两个数字相加You are given two non-empty&n
- 开始学习WebSocket,准备用它来实现一个在页面实时输出log4j的日志以及控制台的日志。首先知道一些基础信息:1.java7 开始支持