我正在尝试使用用户ID和pwd创建与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方法,但它说#34;连接超时"
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',)
答案 0 :(得分:1)
我希望使用https而不是套接字通过互联网公开API。你确定你必须这样做吗?
有很多软件包可以使用基本身份验证进行安全呼叫。 请求包是更高级别并在许多项目中使用,因此这是您最安全的选择。
请注意,这些库的早期版本只是忽略了证书验证,如果它必须非常安全,请确保您。