代码适用于旧版本的 urllib3 软件包(1.6),但不适用于最新版本(2.0.4)

问题描述 投票:0回答:1

我有一个代码,可以让我登录到服务器。该代码适用于旧版本的 Urllib3 (1.6),但不适用于最新版本 (2.0.4)。我需要更改什么才能使其在最新版本上运行?

这是我的代码:

import requests
import urllib3

requests.packages.urllib3.disable_warnings()
try:
    requests.packages.urllib3.contrib.pyopenssl.util.ssl_ += ':HIGH:!DH:!aNULL'
except AttributeError:
    # no pyopenssl support used / needed / available
    pass
with requests.Session() as session:
    print(dir(session.post))
    login = session.post(url="https://xxx.xxx.xxx.xxx/login.jsp", verify=False)
    with open(r"path", "w", encoding="utf-8") as file:
        file.write(login.text)
python ssl python-requests urllib3
1个回答
0
投票

您提供的代码似乎混合使用了过时的方法和过时的方法来禁用警告。在最新版本的 requests 和 urllib3 中,您应该使用以下方法禁用 SSL 警告并发出 HTTP 请求:

import requests

# Disable SSL warnings
requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning)

# Define the session
with requests.Session() as session:
    # Make a POST request
    login = session.post(url="https://xxx.xxx.xxx.xxx/login.jsp", verify=False)
    # Handle the response
    with open(r"path", "w", encoding="utf-8") as file:
        file.write(login.text)

以下是有关此代码的一些要点:

  1. 我们使用requests.packages.urllib3.disable_warnings()来禁用SSL 警告。
  2. 我们指定要禁用的具体警告,即 requests.packages.urllib3.exceptions.InsecureRequestWarning.
  3. 我们使用requests.Session()来创建一个保存cookie的会话 跨请求。
  4. 我们使用 session.post() 和 url 发出 POST 请求 verify=False 忽略 SSL 证书验证。

此代码应适用于最新版本的 requests 和 urllib3。通过运行 pip install --upgrade requests urllib3 确保安装了这两个库的最新版本。

© www.soinside.com 2019 - 2024. All rights reserved.