http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 22044|回复: 4

[求助] 高难度:一个httpHelper和Fidder都过不去的Https地址。

[复制链接]
发表于 2016-9-23 17:20:47 | 显示全部楼层 |阅读模式

我用苏飞的代码好久了。通过使用httpHelper 轻松 搞定所有 https 访问,最多加一个本地的cer。但最近https://makeabooking.flyscoot.com/?culture=zh-CN这么访问的时候,遇到麻烦了。
Fiddler Web Debugger (v4.6.2.0)
64-bit AMD64, VM: 71.0mb, WS: 91.0mb
.NET 4.0.30319.1026 WinNT 6.1.7601 SP1

也过不去。
httpHelper  也不行返回0.

fidder返回的错误是:
fiddler.network.https> HTTPS handshake to makeabooking.flyscoot.com (for #22) failed. System.IO.IOException 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。 < 远程主机强迫关闭了一个现有的连接。


目前无解。但是既然浏览器能够,总有办法可以过吧。就寄托于httpHelper了。
------------------------------------------------------------------------------------------------------------------------
A SSLv3-compatible ClientHello handshake was found. Fiddler extracted the parameters below.

Version: 3.3 (TLS/1.2)
Random: B6 DA BF A7 66 1E E6 39 F6 29 92 BA 44 C0 DA DF 45 29 69 9C 8C 9F E6 55 CD 68 3D D7 54 D8 8E 2A
"Time": 2059/3/9 1:00:38
SessionID: empty
Extensions:
        renegotiation_info        00
        server_name        makeabooking.flyscoot.com
        extended_master_secret        empty
        SessionTicket        empty
        signature_algs        sha512_rsa, sha512_ecdsa, sha384_rsa, sha384_ecdsa, sha256_rsa, sha256_ecdsa, sha224_rsa, sha224_ecdsa, sha1_rsa, sha1_ecdsa
        status_request        OCSP - Implicit Responder
        NextProtocolNego        empty
        SignedCertTimestamp (RFC6962)        empty
        ALPN                h2, spdy/3.1, http/1.1
        channel_id(GoogleDraft)        empty
        ec_point_formats        uncompressed [0x0]
        elliptic_curves        secp256r1 [0x17], secp384r1 [0x18]
Ciphers:
        [C02B]        TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
        [C02F]        TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
        [CCA9]        Unrecognized cipher - See http://www.iana.org/assignments/tls-parameters/
        [CCA8]        Unrecognized cipher - See http://www.iana.org/assignments/tls-parameters/
        [CC14]        TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
        [CC13]        TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
        [C00A]        TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
        [C014]        TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA
        [C009]        TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
        [C013]        TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA
        [009C]        TLS_RSA_WITH_AES_128_GCM_SHA256
        [0035]        TLS_RSA_AES_256_SHA
        [002F]        TLS_RSA_AES_128_SHA
        [000A]        SSL_RSA_WITH_3DES_EDE_SHA

Compression:
        [00]        NO_COMPRESSION






1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2016-9-23 17:57:17 | 显示全部楼层
[C#] 纯文本查看 复制代码
            ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
            //创建Httphelper对象
            HttpHelper http = new HttpHelper();
            //创建Httphelper参数对象
            HttpItem item = new HttpItem()
            {
                URL = "https://makeabooking.flyscoot.com/?culture=zh-CN",//URL     必需项    
                Method = "get",//URL     可选项 默认为Get   
                ContentType = "text/html",//返回类型    可选项有默认值   

            };
            //请求的返回值对象
            HttpResult result = http.GetHtml(item);
            //获取请请求的Html
            string html = result.Html;

这样写试试
回复 支持 1 反对 0

使用道具 举报

发表于 2016-9-23 18:02:31 | 显示全部楼层
关键在这一句ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
发表于 2016-9-23 21:46:43 | 显示全部楼层
你用http方式请求就好了。
 楼主| 发表于 2016-9-24 12:23:35 | 显示全部楼层
站长苏飞 发表于 2016-9-23 17:57
[mw_shl_code=csharp,true]            ServicePointManager.SecurityProtocol = (SecurityProtocolType)30 ...

多谢苏飞。
我查看了证书它用的是tls1.2. FIdder中没有这个。随后
我正好看了你一篇帖子。说有人微信也遇到类似这个问题。
应该强制指定 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

进一步我确认是因为我的NET.FRAMWROK 用的是4.0. 这个需要升级到4.5以上才行。
我之前IDE用的是2010.    4.5需要2012以上的IDE才能识别。

升级后,Fidder 可以识别了。 代码中加入这行也OK了。
so...问题最终解决。

再次感谢苏飞的知识库。真是难得给力的帖子啊。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-22 05:36

© 2014-2021

快速回复 返回顶部 返回列表