【问题标题】:Plain text authentication: Python纯文本认证:Python
【发布时间】:2017-03-08 19:37:24
【问题描述】:

我正在尝试使用用户 ID 和密码创建与 Money.net API 的安全连接,但我没有收到来自服务器的任何响应。我正在使用 Ipython Notebook 进行开发,我是编程和 Python 世界的新手 :)

import socket
import sys
Server_address = ('api.data.money.net',50010)
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print sys.stderr, 'connecting to %s port %s' %Server_address
s.connect(Server_address)
####### I pass plain text authentication credentials below #####
username, password, DATA

什么都没有发生,服务器没有按预期回复“OK”

我也尝试了下面的 TLS socket.wrap 方法,但它显示“连接超时”

import socket
import ssl

# SET VARIABLES
#packet, reply = "QS MSFT", ""
HOST, PORT = 'api.data.money.net', 50010

# CREATE SOCKET
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(30)

# WRAP SOCKET
wrappedSocket = ssl.wrap_socket(sock,keyfile=None,server_side=0,
                            ssl_version=ssl.PROTOCOL_TLSv1,                                    cert_reqs=ssl.CERT_NONE,do_handshake_on_connect=True)


# CONNECT AND PRINT REPLY
wrappedSocket.connect((HOST, PORT))


#Plain Text authentication
'username','password'

我收到回复

'username','password'

然后我执行以下操作

packet,reply="QS MSFT",""
wrappedSocket.send(packet)
print wrappedSocket.recv(1280)

我最后得到以下错误

SSLError: ('The read operation timed out',)

【问题讨论】:

  • 您能否提供指向此 API 文档的链接?另外,我在这里没有任何代码来创建“安全”连接。
  • 嗨 James - 链接如下money.net/datafeed
  • 所以,就像@Jean-Paul 建议的那样,文档说“...您必须使用 TLS 进行连接。我们的服务器将为 *.data.money.net...提供一个 TLS 证书...”。你应该看看pythonssl module
  • @James - 我尝试通过 TLS 连接,但我仍然遇到错误。

标签: python-2.7 sockets networking tcp-ip tls1.2


【解决方案1】:

我希望使用 https 而不是套接字通过 Internet 公开 API。你确定一定要走那条路吗?

有很多包可以通过基本身份验证进行安全调用。 requests 包级别更高,并且在许多项目中使用,所以这将是您最安全的选择。

请注意,这些库的早期版本只是忽略了证书验证,如果它必须非常安全,请确保您这样做。

查看Python, HTTPS GET with basic authentication 的答案。

【讨论】:

  • 根据他们的 www.money.net/datafeed 文档“注意:如果您在网络上使用代理服务器,我们的系统需要独立的 SOCKS 代理或结合网络的 SOCKS 代理代理。仅处理 HTTP 和 HTTPS 流量的 Web 代理将不起作用,因为我们的市场数据连接使用与 HTTP 协议不兼容的专有 TCP 协议。“但是如上所示,我确实尝试使用套接字包装进行 TLS 连接,但它没有也可以工作:(
猜你喜欢
  • 2014-03-08
  • 2010-11-02
  • 2011-01-25
  • 2012-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多