基于https系统自动登陆与动态数据处理

本文介绍了在处理HTTPS登录和动态数据时遇到的证书问题及解决方案。通过设置System.Net.ServicePointManager来忽略证书名称不匹配,并创建TrustAllCertificatePolicy类确保SSL通道建立。使用HttpAnalyzerStdV3工具进行数据包分析,确定需要关注的iframe,分析动态数据页面,以及处理cookie和javascript跳转问题,以实现自动登录和数据交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


由于登陆https时会需要证书,我们在登陆时有时候会遇到异常:System.Net.Sockets.SocketException,

Message="由于目标机器积极拒绝,无法连接。",这可能是由于证书名称不匹配的原因,如果您无法配置

远程处理客户端以使用证书公共名称,则可以使用客户端应用程序配置文件中的以下设置重写这一不匹配

的情况。
<system.net>
   <settings>
      <servicePointManager
         checkCertificateName="true"
      />
   </settings>
</system.net>
若要以编程方式使客户端忽略证书名称不匹配,客户端必须创建一个特定类的实例,如果

certificateProblem 值为 0x800c010f,该类将实现 ICertificatePolicy 接口并实现

CheckValidationResult 方法以返回 true。然后,您必须将该对象注册到

System.Net.ServicePointManager 对象,方法是将该对象传递到

ServicePointManager.CertificatePolicy 属性。”
为了使CheckValidationResult 无条件返回true,我们声明一个TrustAllCertificatePolicy类:
    public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy
    {
        public TrustAllCertificatePolicy()
        {
        }
        public bool CheckValidationResult(ServicePoint

sp,System.Security.Cryptography.X509Certificates.X509Certificate cert,
                                          WebRequest req, int problem)
        {
            return true;
        }
    }
然后,在请求之前加上
System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();
即可。
这样,代码就可以顺利和https服务器建立SSL通道了。

【上面部份内容来自互联网,已经忘记作者blog】
下面就只需要通过工具来抓包分析,我使用的是HttpAnalyzerStdV3,当然还有其他更多的工具,不过个人

感觉这个工具就足以胜任此项工作。对每一个需要我们分析的步骤中用此工作抓包,分析数据流与实际的

跳转地址。得到后就只需要HttpWebRequest将数据POST过去,用HttpWebReponse获取返回的数据。
个人总结:
1.首先要分析需要自动登陆的系统的web页面,在浏览器中通过查看源文件的方式看到html代码,分析结

构,因为有的页面可能是由多个iframe组成,而我们关注的仅仅只是其中的一个iframe,这时候查看哪个

iframe的html代码就由我们的需求确定。
2.如果需要对动态生成的数据做处理,那么我们也应该分析对应的动态数据所在页面,现实中可能通过多

个步骤才能进入某一个动态数据的页面,但在我们的模拟操作过程中,并不需要对所有的步骤进行模拟,

如果URL地址没有加密,我们可以尝试根据刚刚获取的URL地址,直接在同一进程中通过ctrl+n建一个新的

页面,输入刚才的URL地址。如果也能直接得到数据,那么就会使工作变得简单多了,因为我们模拟登陆

后,直接就可以转到这个页面来了。如果不能直接进入,那么还需要进一步抓包分析。
3.采用HttpAnalyzerStd进行抓包分析时,可以有针对性的进行分析,一些不需要的包可以不抓,避免给

分析带来麻烦,仅仅抓住某个动作发生时的包数据。
4.还应注意cookie的问题,如果系统是跳转多个服务器的话,可能需要重写cookie值。
5.由于系统中某一动作发生时可能采用javascript来实现页面的跳转,我们模拟的动作执行之后,得到的

GetResponseStream会是一个无法跳转到某某页的提示。这个时候就还需要我们将这个流中的URL地址提取

出来,再GET到这个URL.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值