使用C#的HttpWebRequest模拟登陆网站

news/2024/5/9 11:02:45/文章来源:https://blog.csdn.net/weixin_30652491/article/details/97118043

很久没有写新的东西了,今天在工作中遇到的一个问题,感觉很有用,有种想记下来的冲动。

这篇文章是有关模拟登录网站方面的。

实现步骤;

  1. 启用一个web会话
  2. 发送模拟数据请求(POST或者GET)
  3. 获取会话的CooKie 并根据该CooKie继续访问登录后的页面,获取后续访问的页面数据。

我们以登录人人网为例,首先需要分析人人网登录时POST的数据格式,这个可以通过IE9中只带的F12快捷键,调出开发人员工具。如下图:

 

通过开始捕获得到POST的地址和POST的数据

POST数据:

email=aaa@163.com&password=111&icode=&origURL=http%3A%2F%2Fwww.renren.com%2Fhome&domain=renren.com&key_id=1&_rtk=90484476

POST地址:

http://www.renren.com/PLogin.do

下面就是代码示例来得到登录后页面(http://guide.renren.com/guide)的数据

HTMLHelper类

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Threading;

namespace Test
{
public class HTMLHelper
{
/// <summary>
/// 获取CooKie
/// </summary>
/// <param name="loginUrl"></param>
/// <param name="postdata"></param>
/// <param name="header"></param>
/// <returns></returns>
public static CookieContainer GetCooKie(string loginUrl, string postdata, HttpHeader header)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
try
{
CookieContainer cc = new CookieContainer();
request = (HttpWebRequest)WebRequest.Create(loginUrl);
request.Method = header.method;
request.ContentType = header.contentType;
byte[] postdatabyte = Encoding.UTF8.GetBytes(postdata);
request.ContentLength = postdatabyte.Length;
request.AllowAutoRedirect = false;
request.CookieContainer = cc;
request.KeepAlive = true;

//提交请求
Stream stream;
stream = request.GetRequestStream();
stream.Write(postdatabyte, 0, postdatabyte.Length);
stream.Close();

//接收响应
response = (HttpWebResponse)request.GetResponse();
response.Cookies = request.CookieContainer.GetCookies(request.RequestUri);

CookieCollection cook = response.Cookies;
//Cookie字符串格式
string strcrook = request.CookieContainer.GetCookieHeader(request.RequestUri);

return cc;
}
catch (Exception ex)
{

throw ex;
}
}

/// <summary>
/// 获取html
/// </summary>
/// <param name="getUrl"></param>
/// <param name="cookieContainer"></param>
/// <param name="header"></param>
/// <returns></returns>
public static string GetHtml(string getUrl, CookieContainer cookieContainer,HttpHeader header)
{
Thread.Sleep(1000);
HttpWebRequest httpWebRequest = null;
HttpWebResponse httpWebResponse = null;
try
{
httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(getUrl);
httpWebRequest.CookieContainer = cookieContainer;
httpWebRequest.ContentType = header.contentType;
httpWebRequest.ServicePoint.ConnectionLimit = header.maxTry;
httpWebRequest.Referer = getUrl;
httpWebRequest.Accept = header.accept;
httpWebRequest.UserAgent = header.userAgent;
httpWebRequest.Method = "GET";
httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
Stream responseStream = httpWebResponse.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);
string html = streamReader.ReadToEnd();
streamReader.Close();
responseStream.Close();
httpWebRequest.Abort();
httpWebResponse.Close();
return html;
}
catch (Exception e)
{
if (httpWebRequest != null) httpWebRequest.Abort();
if (httpWebResponse != null) httpWebResponse.Close();
return string.Empty;
}
}
}

public class HttpHeader
{
public string contentType { get; set; }

public string accept { get; set; }

public string userAgent { get; set; }

public string method{get;set;}

public int maxTry { get; set; }
}
}
复制代码

 

测试用例:

复制代码
  HttpHeader header = new HttpHeader();
header.accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-silverlight, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-silverlight-2-b1, */*";
header.contentType = "application/x-www-form-urlencoded";
header.method = "POST";
header.userAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";
header.maxTry = 300;

string html = HTMLHelper.GetHtml("http://guide.renren.com/guide", HTMLHelper.GetCooKie("http://www.renren.com/PLogin.do",
"email=aaa@163.com&password=111&icode=&origURL=http%3A%2F%2Fwww.renren.com%2Fhome&domain=renren.com&key_id=1&_rtk=90484476", header), header);

Console.WriteLine(html);


Console.ReadLine();
复制代码

 

转载于:https://www.cnblogs.com/opop/p/5445295.html

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

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

相关文章

Scrapy框架模拟Github网站登陆

1. 以往的模拟登陆的方法 1.1 requests模块是如何实现模拟登陆的&#xff1f; 直接携带cookies请求页面找url地址&#xff0c;发送post请求存储cookie 1.2 selenium是如何模拟登陆的&#xff1f; 找到对应的input标签&#xff0c;输入文本点击登陆 1.3 scrapy的模拟登陆 直…

Python爬虫并自制新闻网站,太好玩了

来源 | 凹凸数据&#xff08;ID&#xff1a;alltodata&#xff09;我们总是在爬啊爬&#xff0c;爬到了数据难道只是为了做一个词云吗&#xff1f;当然不&#xff01;这次我就利用flask为大家呈现一道小菜。Flask是python中一个轻量级web框架&#xff0c;相对于其他web框架来说…

Spring Boot 2.X整合Spring-cache,让你的网站速度飞起来

计算机领域有人说过一句名言&#xff1a;“计算机科学领域的任何问题都可以通过增加一个中间层来解决”&#xff0c;今天我们就用Spring-cache给网站添加一层缓存&#xff0c;让你的网站速度飞起来。本文目录 一、Spring Cache介绍二、缓存注解介绍三、Spring BootCache实战1、…

一步步构建大型网站架构

之前我简单向大家介绍了各个知名大型网站的架构&#xff0c;MySpace的五个里程碑、Flickr的架构、YouTube的架构、PlentyOfFish的架构、WikiPedia的架构。这几个都很典型&#xff0c;我们可以从中获取很多有关网站架构方面的知识&#xff0c;看了之后你会发现你原来的想法很可能…

利用WxJava实现PC网站集成微信登录功能,核心代码竟然不超过10行

最近网站PC端集成微信扫码登录&#xff0c;踩了不少坑&#xff0c;在此记录下实现过程和注意事项。本文目录 一、微信开放平台操作步骤1.创建“网站应用”2.获取AppID和AppSecret二、开发指南三、开发实战1、pom.xml引入jar包2、配置文件添加对应的配置3、初始化配置4、控制层核…

你为什么应该经常访问招聘网站?招聘网站至少有4个方面的价值!

一、缘起读大学的时候&#xff0c;有时候会感到很迷茫&#xff0c;不知道毕业之后可以做什么&#xff0c;自己能拿到多少的月薪。于是&#xff0c;就想到去参加一些公司的招聘。大二大三的时候&#xff0c;就去武大参加了武汉中地数码等3个公司的笔试。但是&#xff0c;没有交答…

从12306网站谈起虚拟主机选购注意事项

2019独角兽企业重金招聘Python工程师标准>>> “独在异乡为异客&#xff0c;每逢佳节倍思亲。”在临近年关的氛围下&#xff0c;尤其是只能通过火车才能归家的“游子”&#xff0c;是否也像笔者一样看着不能打开的12306网站望“票”兴叹呢&#xff1f;身为国内资深虚…

在任何设备上都完美呈现的30个华丽的响应式网站

如今&#xff0c;一个网站只在桌面屏幕上好看是远远不够的&#xff0c;同时也要在平板电脑和智能手机中能够良好呈现。响应式的网站是指它能够适应客户端的屏幕尺寸&#xff0c;自动响应客户端尺寸变化。在这篇文章中&#xff0c;我将向您展示在任何设备上都完美的30个华丽的响…

新浪微博推广网站的一些实践体会

本以为微博推广很难&#xff0c;每天都要刷粉刷内容的&#xff0c;也本以为做微博推广也很简单&#xff0c;一不卖产品、二不卖服务的&#xff0c;目的单纯灵活性强些&#xff0c;做了之后才发现都不是那么回事&#xff0c;微博虽然也过了“火了”&#xff0c;但新媒体还真是不…

windowsXP用户被禁用导致不能网站登录

1、查看系统事件&#xff0c;发现弹出如下的错误 2、根据上面的错误&#xff0c;我们很容易就可以判断是禁用了账户引起的 2.1后面进入计算机管理&#xff0c;再进入用户管理 2.2双击点开Internet来宾用于&#xff0c;发现此用户已经停用了。 2.3双击点开与IIS访问有关用户&…

AI 和 SEO 的结合:是福还是祸?

作者 | Vik Bogdanov翻译 | Katie,责编 | 晋兆雨头图 | 付费下载于视觉中国自成立以来&#xff0c;搜索引擎已经从基本搜索代理变成了基于人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;的复杂算法。这些创新技术从两个完全相反的角度影响搜索引擎优…

【云计算】云上建站快速入门:博客、论坛、CMS、电子商务网站统统

免费网站怎么建&#xff0c;空间也能免费吗?免费网站怎么建立&#xff0c;免费网站并非免费空间互联网真的有免费建站这等好事&#xff1f;现在制作一个网站已经越来越容易了&#xff0c;只要知道清晰的流程之后都是可以很快的建好一个企业或者个人网站的&#xff01;免费的建…

PrestaShop 网站后台配置(六)

转载请注明出处&#xff1a;http://www.cnblogs.com/zhong-dev/p/4943023.html 网店版本 Prestashop v1.6 配置邮箱店铺在客户下单之后&#xff0c;可以自动给客户发送邮件&#xff0c;要实现这个功能首先一点服务器要支持邮件功能。现在网店的运行环境是 amh 环境&#xff0c…

在 Azure 网站上使用 Memcached 改进 WordPress

编辑人员注释&#xff1a;本文章由 Windows Azure 网站团队的项目经理 Sunitha Muthukrishna 和 Windows Azure 网站开发人员体验合作伙伴共同撰写。 您是否希望改善在 Azure 网站服务上运行的 WordPress 网站的性能&#xff1f;如果是&#xff0c;那么您就需要一个可帮助加快您…

微软惹的祸!CVPR提交网站最后1小时被挤崩,官方紧急延长36小时

视学算法报道 编辑&#xff1a;小咸鱼 好困【新智元导读】CVPR提交网站宕机了&#xff0c;而且还是在截止时间前的最后1个小时&#xff01;于是DDL被紧急延长了1天半。什么&#xff1f;CVPR 2022的论文提交网站居然在deadline之前一个小时崩掉了&#xff01;赶着DDL提交论文的…

域名年龄-SEO搜索引擎优化

为什么80%的码农都做不了架构师&#xff1f;>>> 域名年龄-SEO搜索引擎优化 在我们创建一个新的网站时&#xff0c;我们首先考虑到的是去注册一个新的域名。 有时发现我们 要注册的域名已经被注册了&#xff0c;于是就有两种方式&#xff1a; 一、重新注册另外的…

网络空间安全之信息追踪——学习笔记 利用门户网站,综合信息追踪

企业信息追踪与防护&#xff1a; 对于一个公司来说&#xff0c;只要牵扯到公司任一信息&#xff0c;都可以称之为公司的机密文件&#xff01; 知名门户网站搜索&#xff1a; 新华网&#xff1a;http://www.xinhuanet.com/ 党中央直接部署的&#xff0c;重大影响力&#xff01; …

1.lamp网站构建

bs、cs结构 及优缺点 s-server , c-client , b-broswer cs结构&#xff1a;客户端--服务器 &#xff0c; 比如QQ&#xff0c;首先要下载QQ客户端&#xff0c;之后是客户端与服务器连接 &#xff0c; bs结构&#xff1a;浏览器--服务器 &#xff0c; 浏览器直接登录的&#xff…

大型网站架构演变和知识体系

转载&#xff1a;http://www.blogjava.net/BlueDavy/archive/2008/09/03/226749.html 大型网站架构演变和知识体系之前也有一些介绍大型网站架构演变的文章&#xff0c;例如LiveJournal的、ebay的&#xff0c;都是非常值得参考的&#xff0c;不过感觉他们讲的更多的是每次演变的…

作者免费分享自己论文也不行,知名学术社交网站被判侵权,此前已下架20万余篇论文...

点击上方“视学算法”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达来源丨量子位编辑丨极市平台导读 知名学术社交网站ResearchGate被判下架50篇受版权保护的论文&#xff0c;并被要求对侵权内容负责。这场关于“开放获取”的官司&#xff0c…