利用httpwebrequest登陆csdn出现的问题

vip__888 vip__888 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我利用httpwebrequest登陆老是实现不了。不知道为什么。
我说一下我的流程。

登陆userlogin.aspx页面,将页面的cookie保存,然后使用保存的cookie到验证码页面将验证码下载下来

接着继续利用cookie post数据到表单。
但是没有成功。不知道是什么原因。
代码如下。
        /// <summary>
/// 通过get方式请求页面,传递一个实例化的cookieContainer
/// </summary>
/// <param name="postUrl"></param>
/// <param name="cookie"></param>
/// <returns></returns>
public static ArrayList GetHtmlData(string postUrl, CookieContainer cookie)
{
HttpWebRequest request;
HttpWebResponse response;
ArrayList list = new ArrayList();
request = WebRequest.Create(postUrl) as HttpWebRequest;
request.Method = "GET";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; CIBA; .NET4.0C; .NET4.0E)";
request.CookieContainer = cookie;
request.KeepAlive = true;
request.Accept = "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
try
{
//获取服务器返回的资源
using (response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default))
{
if (response.Cookies.Count > 0)
cookie.Add(response.Cookies);
//保存Cookies
list.Add(cookie);
list.Add(reader.ReadToEnd());
list.Add(Guid.NewGuid().ToString());//图片名
}
}
}
catch (WebException ex)
{
list.Clear();
list.Add("发生异常\n\r");
WebResponse wr = ex.Response;
using (Stream st = wr.GetResponseStream())
{
using (StreamReader sr = new StreamReader(st, System.Text.Encoding.Default))
{
list.Add(sr.ReadToEnd());
}
}
}
catch (Exception ex)
{
list.Clear();
list.Add("5");
list.Add("发生异常:" + ex.Message);
}
return list;
}


/// <summary>
/// 下载验证码图片并保存到本地
/// </summary>
/// <param name="Url">验证码URL</param>
/// <param name="cookCon">Cookies值</param>
/// <param name="savePath">保存位置/文件名</param>
public static bool DowloadCheckImg(string Url, CookieContainer cookCon, string savePath)
{
bool bol = true;
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(Url);
webRequest.Referer = "http://passport.csdn.net/UserLogin.aspx";
webRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; CIBA; .NET4.0C; .NET4.0E)";
webRequest.KeepAlive = true;
webRequest.Accept = "*/*";
webRequest.CookieContainer = cookCon;
try
{
//获取服务器返回的资源
using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse())
{
using (Stream sream = webResponse.GetResponseStream())
{
List<byte> list = new List<byte>();
while (true)
{
int data = sream.ReadByte();
if (data == -1)
break;
list.Add((byte)data);
}
File.WriteAllBytes(savePath, list.ToArray());
}
}
}
catch (WebException ex)
{
bol = false;
}
catch (Exception ex)
{
bol = false;
}
return bol;
}


        /// <summary>
/// 发送相关数据至页面
/// 进行登录操作
/// 并保存cookie
/// </summary>
/// <param name="postData"></param>
/// <param name="postUrl"></param>
/// <param name="cookie"></param>
/// <returns></returns>
public static ArrayList PostData(string postData, string postUrl, CookieContainer cookie)
{
ArrayList list = new ArrayList();
HttpWebRequest request;
HttpWebResponse response;
ASCIIEncoding encoding = new ASCIIEncoding();
request = WebRequest.Create(postUrl) as HttpWebRequest;
byte[] b = encoding.GetBytes(postData);
request.Method = "POST";
request.CookieContainer = cookie;
request.ContentLength = b.Length;
using (Stream stream = request.GetRequestStream())
{
stream.Write(b, 0, b.Length);
}
try
{
//获取服务器返回的资源
using (response = request.GetResponse() as HttpWebResponse)
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
if (response.Cookies.Count > 0)
cookie.Add(response.Cookies);
list.Add(cookie);
list.Add(reader.ReadToEnd());
}
}
}
catch (WebException wex)
{
WebResponse wr = wex.Response;
using (Stream st = wr.GetResponseStream())
{
using (StreamReader sr = new StreamReader(st, System.Text.Encoding.Default))
{
list.Add(sr.ReadToEnd());
}
}
}
catch (Exception ex)
{
list.Add("发生异常\n\r"+ex.Message);
}
return list;
}


主要的3个方法。不需要登陆的话可以抓取到数据,不知道为什么这样就不可以。
求解。
...全文

相关推荐

build-bluez-static.sh

# BlueZ 5.77 交叉编译脚本 (动态链接, 可在 OpenHarmony 上运行) # 工具链: gcc-arm-10.3-2021.07 (arm-none-linux-gnueabihf, glibc 2.33) # # 背景: OpenHarmony 使用 musl libc, 与 glibc 静态二进制不兼容 (NSS 问题) # 方案: 编译为动态链接, 打包 glibc 运行时 .so, 用自定义 ld-linux 启动

春风亭老朝1

国央企在开展内部创新项目时,如何有效进行技术成果的价值评估与资源筛选?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

电力系统风储联合一次调频仿真模型(Simulink仿真实现)

内容概要:本文详细介绍了一个基于Simulink平台构建的电力系统风储联合一次调频仿真模型,重点实现了风电与储能系统协同参与电网频率调节的动态过程。模型核心技术涵盖三电平ANPC并网逆变器控制、DPWMA调制策略、正负序分离与电网前馈控制,并引入虚拟同步发电机(VSG)控制以增强系统惯性与频率响应能力。仿真体系包含双闭环控制、中点电位平衡、虚拟阻抗、统一有源阻尼、孤岛检测等功能模块,支持在不平衡电网、弱电网等复杂工况下进行系统稳定性分析与先进控制策略验证,特别适用于低惯量电力系统中的一次调频研究与SCI级论文成果复现。; 适合人群:面向具备电力电子、电力系统自动化或新能源并网控制背景的研究生、科研人员及工程技术开发者;要求熟悉Matlab/Simulink仿真环境,有逆变器控制或微网运行研究经验者更佳。; 使用场景及目标:①开展风电与储能协同参与电网一次调频的控制策略研究;②验证VSG、下垂控制、模型预测控制(MPC)等先进控制方法在构网型逆变器中的动态性能;③复现高水平期刊论文中的电磁暂态仿真案例,支撑科研立项、论文撰写与工程项目开发。; 阅读建议:建议结合提供的参考文献与配套仿真资料,逐步搭建并调试各功能模块,重点关注控制环路设计、参数整定与阻抗建模方法,通过对比不同扰动工况下的仿真结果,深入理解系统动态响应特性与稳定性机理。

欢多天天写代码

美股分钟级别历史行情数据涵盖1分钟、5分钟、15分钟、30分钟及60分钟等不同周期 每条记录包含日期时间、开盘价、最高价、最低价、收盘价、成交量,部分数据还提供调整后的收盘价及成交笔数 所有数据按股票

美股分钟级别历史行情数据涵盖1分钟、5分钟、15分钟、30分钟及60分钟等不同周期。每条记录包含日期时间、开盘价、最高价、最低价、收盘价、成交量,部分数据还提供调整后的收盘价及成交笔数。所有数据按股票代码和日期组织,便于查看日内走势和交易活跃度。 数据源:CMES金融数据库

c_hn_007

科技中介服务机构如何利用数智工具提升技术需求挖掘效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN
评论 27
收藏 已收藏
分享
返回顶部
vip__888
.NET社区 62,272 成员 668,968 内容