Python SocksiPy包错误:TypeError:类型str不支持字符串的缓冲API?

时间:2015-02-04 15:55:16

标签: python socks imaplib

当我尝试通过此代码连接到gmail时:

import socks
import imaplib
import socket
import socks
s = socks.socksocket()
s.setproxy(socks.PROXY_TYPE_HTTP, '192.168.208.51', 3128)
s.connect(('imap.gmail.com', 993))

我收到错误消息:

Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
s.connect(('imap.gmail.com', 993))
File "C:\Python34\lib\site-packages\socks.py", line 406, in connect
self.__negotiatehttp(destpair[0],destpair[1])
File "C:\Python34\lib\site-packages\socks.py", line 357, in __negotiatehttp
while resp.find("\r\n\r\n")==-1:
TypeError: Type str doesn't support the buffer API

有什么想法吗?我在使用代理的计算机上,因此使用SocksiPy连接到imap.gmail.com

1 个答案:

答案 0 :(得分:0)

你的代码没有错;您正在使用尚未移植到Python 3的SocksiPy版本。您应该升级到版本1.02。或者你应该切换回Python 2。


<强>阐释:

这是Python 3.与Python 2不同,bytesstr对象不可互换。如果你尝试做这样的事情:

>>> b'abc'.find('a')

您将收到您所看到的错误。实际上,“缓冲API”是由bytes个对象实现的。