Fro*_*art 5 python authentication cookies ssl http
我正在尝试通过 Python 登录该网站。我有以下代码:
import sys
sys.path.append('ClientCookie-1.3.0')
import ClientCookie
sys.path.append('ClientForm-0.2.10')
import ClientForm
cookieJar = ClientCookie.CookieJar()
opener = ClientCookie.build_opener(ClientCookie.HTTPCookieProcessor(cookieJar))
opener.addheaders = [("User-agent","Mozilla/5.0 (compatible)")]
ClientCookie.install_opener(opener)
fp = ClientCookie.urlopen("login_page_url")
forms = ClientForm.ParseResponse(fp)
fp.close()
# print forms on this page
for form in forms:
print("***************************")
print(form)
form = forms[2]
form["username"] = "some_username"
form["password"] = "some_password"
fp = ClientCookie.urlopen(form.click())
fp.close()
fp = ClientCookie.urlopen("some_url_for_authorized_users_only")
html = fp.read()
fp.close();
print(html.decode('utf-8'))
Run Code Online (Sandbox Code Playgroud)
输出
URLError: <urlopen error [Errno 8] _ssl.c:507: EOF occurred in violation of protocol>
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?这是什么意思?我该如何修复这个错误?
看起来您遇到的问题是由过时的 OpenSSL 版本引起的。检查版本
$ openssl version -a
Run Code Online (Sandbox Code Playgroud)
和
$ python -c "import ssl; print ssl.OPENSSL_VERSION"
Run Code Online (Sandbox Code Playgroud)
这些可能不一致。第一个命令显示您的系统使用的版本。如果您看到第二个命令的不同(可能较旧)版本,这意味着 python 没有引用您安装的最新 openssl。
就我而言,第一个结果是 0.9~,所以我通过自制软件将 OpenSSL 升级到 1.0.2k。然后我重新安装了 python 以强制执行新版本。
如果您使用 Mac, howtoupgradessl是升级 ssl 的一个很好的参考。在这种情况下,您可能也想参考这一点,因为较新的 osx 具有更强的安全性,您需要解锁。
| 归档时间: |
|
| 查看次数: |
4472 次 |
| 最近记录: |