请选择 进入手机版|继续访问电脑版
发新帖

requests 请求网址出错

[复制链接]
9822 13

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
import requests
url = 'https://www.asqql.com/html_zuanti/index_2.html'
res = requests.get(url, verify=False)
res.encoding='gb2312'
print(res.text)

报错:requests.exceptions.SSLError: HTTPSConnectionPool(host='www.asqql.com', port=443): Max retries exceeded with url: /html_zuanti/index_2.html (Caused by SSLError(SSLError("bad handshake: SysCallError(-1, 'Unexpected EOF')",),))

有朋友遇到过这个问题吗,怎么解决呢

举报 使用道具

回复

精彩评论13

zoowii  注册会员  发表于 2018-5-16 17:32:44 | 显示全部楼层
requests.get( https_url, verify=False)

举报 使用道具

回复
302766392  新手上路  发表于 2018-5-16 17:35:55 | 显示全部楼层
一样的, 已知解决方案为:开启 fiddler 捕获情况下发起 requests 请求, 可以正常返回响应体, 想找找有没有更人性化的解决方案

举报 使用道具

回复
xia0chun  新手上路  发表于 2018-5-16 17:48:03 | 显示全部楼层
把 fiddler 关掉再运行一下试试

举报 使用道具

回复
zoowii  注册会员  发表于 2018-5-16 18:01:19 | 显示全部楼层
如何删除回复啊,看错了

举报 使用道具

回复
302766392  新手上路  发表于 2018-5-16 18:28:39 | 显示全部楼层
关掉就报 SSLError 了, 更像是借助了 fiddler 证书才能正常请求, 这也是我无意中测试出来的

举报 使用道具

回复
msg7086  新手上路  发表于 2018-5-16 18:32:12 | 显示全部楼层
TLS 1.3        No
TLS 1.2        No
TLS 1.1        No
TLS 1.0        Yes
SSL 3   INSECURE        Yes
SSL 2   INSECURE        Yes

https://www.ssllabs.com/ssltest/analyze.html?d=www.asqql.com

举报 使用道具

回复
msg7086  新手上路  发表于 2018-5-16 18:49:31 | 显示全部楼层
较新版本的 OpenSSL 已经把有漏洞的 Cipher 全部禁用了,所以 TLS 1.0 以下的所有 Cipher 都无法匹配上。

Chrome 能打开是因为 Chrome 还允许最后一个 Weak Cipher:
TLS_RSA_WITH_3DES_EDE_CBC_SHA           DES-CBC3-SHA


# TLS 1.0 (suites in server-preferred order)
TLS_RSA_WITH_RC4_128_MD5 (0x4)   INSECURE        128
TLS_RSA_WITH_RC4_128_SHA (0x5)   INSECURE        128
TLS_RSA_WITH_3DES_EDE_CBC_SHA (0xa)   WEAK        112
TLS_RSA_WITH_DES_CBC_SHA (0x9)   INSECURE        56
TLS_RSA_EXPORT1024_WITH_RC4_56_SHA (0x64)   INSECURE        56
TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA (0x62)   INSECURE        56
TLS_RSA_EXPORT_WITH_RC4_40_MD5 (0x3)   INSECURE        40
TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 (0x6)   INSECURE        40


The connection to this site uses TLS 1.0 (an obsolete protocol), RSA (an obsolete key exchange), and 3DES_EDE_CBC with HMAC-SHA1 (an obsolete cipher).

举报 使用道具

回复
mayun51  新手上路  发表于 2018-5-16 19:10:34 | 显示全部楼层
requests.get 请求也有用到 OpenSSL,在爬取 TLS 加密的 HTTPS 网页的时候,所以如果待爬取网站的 TLS 版本过低不被 OpenSSL 支持的话,也是会失败报错的。

举报 使用道具

回复
jpyl0423  新手上路  发表于 2018-5-16 19:23:00 | 显示全部楼层
用 NGINX 反代?

举报 使用道具

回复
alvin666  新手上路  发表于 2018-5-16 19:32:25 | 显示全部楼层
fiddler 自带证书,所以你 python 发出去没有证书的包 fiddler 给你加了,verify=False 是关闭 https 认证,某些网站可用,如果网站强制 ssl 的话可以 import certifi 或者 import ssl,有问题可以先百度一下,关键字“ python ssl ”

举报 使用道具

回复
hubqin  新手上路  发表于 2018-5-16 19:41:11 | 显示全部楼层
请求地址的`https`改为`http`试一下

举报 使用道具

回复
glasslion  新手上路  发表于 2018-5-16 19:46:43 | 显示全部楼层
msg7086 的回答才是正解, 我再补充一点,   出现这个错误的根本原因是那个网站 使用的 3DES Cipher 不够安全, 已经被很多库禁用了。除了新版本的 OpenSSL 已经禁用了 3DES 外, 对于老版本的 OpenSSL, requests 本身在 2.11.1 之后, 也禁用了 3DES。如果你的 OpenSSL 版本较老, 可以用下面的方法绕过(或降级 requests )

https://lukasa.co.uk/2017/02/Configuring_TLS_With_Requests/

举报 使用道具

回复
302766392  新手上路  发表于 2018-5-16 19:50:44 | 显示全部楼层
谢谢大家的详细解答

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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