您好在我的centos 6.9中安装tor之后,我使用以下命令通过tor:
访问imap$aStreamContextSettings = array(
'http' => array(
'proxy' => '127.0.0.1:8118'
)
'ssl' => array(
'verify_host' => false,
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$rStreamContext = \stream_context_create($aStreamContextSettings);
$connect = \stream_socket_client('ssl://imap.gmail.com:993',0, "", 10, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $rStreamContext);
该命令效果很好,它使用tor ip而不是我的服务器ip访问imap。 问题是尝试使用socks在php中进行。
以下代码使用端口8118(privoxy port)在tor端口9050中打开http隧道:
$aStreamContextSettings = array(
'socket' => array(
'bindto' => '127.0.0.1:9050',
),
'ssl' => array(
'verify_host' => false,
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
它不能正常工作。
我也试图绑定到tor,但它已经回来了:
stream_socket_client():无法绑定到' 127.0.0.1:9050',系统说:地址已在使用
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
while(1):
_, frame = cap.read()
cv2.imshow('frame',frame)
k = cv2.waitKey(5) & 0xFF
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
我希望有人可以弄清楚我的代码中的问题在哪里
答案 0 :(得分:2)
问题是Privoxy是一个HTTP代理,它可以使用Tor的SOCKS代理作为上游,这样不支持SOCKS的HTTP应用程序仍然可以使用Tor。
由于您正在尝试打开IMAP连接,因此Privoxy不会起作用,因为它希望说HTTP而不是IMAP。
您基本上需要找到支持SOCKS5的IMAP库。如果cURL是使用imap支持构建的,那么它也可以正常工作。
由于PHP套接字不支持SOCKS,另一种选择是使用通用SOCKS客户端,然后使用它从远程IMAP服务器读/写。为此,请查看bitaurora/phsocks。
编辑:根据您的目的,cURL可能仍然是您的最佳选择。连接到IMAP时,您绝对想要使用SSL / TLS,如果使用SOCKS客户端,则必须手动实现TLS。
以下是PHP中的IMAP cURL示例:
{{1}}
适用于Gmail。如果帐户启用了双因素身份验证,则无法使用常规密码登录。您需要生成应用密码并将其用作密码。