Python 3.x 登录网站并获取源代码,获取SSL错误

Python 3.x 登录网站并获取源代码,获取SSL错误,python-3.x,Python 3.x,我尝试在登录后获取网站的源数据,但在登录以获取源数据时遇到问题。url是我登录后看到的网页。也就是说,如果我在chrome上登录,我可以使用url去我需要获取源数据的地方 我不断遇到多个错误,主要是握手错误: “sslv3警报握手失败”、“握手错误”、“urllib3.exceptions.MaxRetryError”,我认为主要错误是 回溯(最近一次呼叫最后一次): 文件“C:\Users\bwayne\AppData\Local\Programs\Python\Python36-32\lib

我尝试在登录后获取网站的源数据,但在登录以获取源数据时遇到问题。url是我登录后看到的网页。也就是说,如果我在chrome上登录,我可以使用
url
去我需要获取源数据的地方

我不断遇到多个错误,主要是握手错误:

“sslv3警报握手失败”、“握手错误”、“urllib3.exceptions.MaxRetryError”,我认为主要错误是

回溯(最近一次呼叫最后一次): 文件“C:\Users\bwayne\AppData\Local\Programs\Python\Python36-32\lib\site packages\urlib3\contrib\pyopenssl.py”,第441行,在wrap\u套接字中 cnx.do_握手()

文件“C:\Users\bwayne\AppData\Local\Programs\Python\Python36-32\lib\site packages\OpenSSL\SSL.py”,第1716行,在do\u握手中 self.\u raise\u ssl\u错误(self.\u ssl,结果)

文件“C:\Users\bwayne\AppData\Local\Programs\Python\Python36-32\lib\site packages\OpenSSL\SSL.py”,第1456行,在_raise\u SSL\u错误中 _引发当前错误()

文件“C:\Users\bwayne\AppData\Local\Programs\Python\Python36-32\lib\site packages\OpenSSL\u util.py”,第54行,来自错误队列的异常 引发异常类型(错误)

OpenSSL.SSL.Error:[(“SSL例程”、“ssl3_读取字节”、“sslv3警报握手失败”)]

在处理上述异常期间,发生了另一个异常:

如何登录?我反复检查了HTML名称是否正确:


您是否尝试过在会话中更改
用户代理
?也许这个网站不允许
python请求作为用户代理。您在哪里使用OpenSSL导入SSL的
?@nutmeg64-如何更改用户代理?另外,我不是-这是我在其他尝试中意外留下的,我将删除该部分。请看一个关于如何使用
请求发送表单数据的好例子。当您在Chrome中单击此url时,它是否会重定向您?如果是,指向哪个url?也许你应该把
POST
放到那个url上去?@nutmag64-当我在我的代码中转到
url
时,它就会转到我想要的站点-登录和其他一切。我添加了
headers={'User-Agent':'Chrome/61.0'}
并执行了
p=s.post(url,headers=headers,data=payload)
,但这似乎没有任何作用……同样的错误出现了。此外,我能够使用Python成功地在chrome中打开选项卡。如果有一种方法可以使用open Chrome会话保存活动选项卡的URL,我想我也会这样做。当你从浏览器中执行此操作时,它已经登录,因为你已经执行过一次,并且浏览器会记住它。尝试注销该站点并再次转到该url。您是否尝试在会话中更改
用户代理
?也许这个网站不允许
python请求作为用户代理。您在哪里使用OpenSSL导入SSL的
?@nutmeg64-如何更改用户代理?另外,我不是-这是我在其他尝试中意外留下的,我将删除该部分。请看一个关于如何使用
请求发送表单数据的好例子。当您在Chrome中单击此url时,它是否会重定向您?如果是,指向哪个url?也许你应该把
POST
放到那个url上去?@nutmag64-当我在我的代码中转到
url
时,它就会转到我想要的站点-登录和其他一切。我添加了
headers={'User-Agent':'Chrome/61.0'}
并执行了
p=s.post(url,headers=headers,data=payload)
,但这似乎没有任何作用……同样的错误出现了。此外,我能够使用Python成功地在chrome中打开选项卡。如果有一种方法可以使用open Chrome会话保存活动选项卡的URL,我想我也会这样做。当你从浏览器中执行此操作时,它已经登录,因为你已经执行过一次,并且浏览器会记住它。尝试注销该站点并再次转到该url。
import requests, sys
import ssl
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.poolmanager import PoolManager


ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
ctx.options |= ssl.OP_NO_SSLv2
ctx.options |= ssl.OP_NO_SSLv3
ctx.options |= ssl.OP_NO_TLSv1
ctx.options |= ssl.OP_NO_TLSv1_1

class Ssl3HttpAdapter(HTTPAdapter):
    def init_poolmanager(self, connections, maxsize, block=False):
        self.poolmanager = PoolManager(num_pools=connections,
                                       maxsize=maxsize,
                                       block=block,
                                       ssl_version=ssl.PROTOCOL_TLSv1)
url = "www.thewebsite.com"

def do_requests(url):
    payload = {'Username': 'myName', 'Password': 'myPass'} 
    headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Mobile Safari/537.36'}
    with requests.Session() as s:
        s.mount(url,Ssl3HttpAdapter())
        p = s.post(url, headers=headers, data=payload, verify=False)

def main(url):
    do_requests(url)


main(url)