如何将HttpSendRequest与tor hidden web服务器一起使用

如何将HttpSendRequest与tor hidden web服务器一起使用,http,file-upload,tor,Http,File Upload,Tor,我尝试使用以下代码将数据从应用程序发送到web服务器上运行的php脚本: #define server_add "mywebsite.com" HINTERNET h = InternetOpen(USER_AGENT,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0); h = InternetConnect(h,CNC,INTERNET_DEFAULT_HTTP_PORT,"","",INTERNET_SERVICE_HTTP,0,0); h = HttpOp

我尝试使用以下代码将数据从应用程序发送到web服务器上运行的php脚本:

#define server_add "mywebsite.com"
HINTERNET h = InternetOpen(USER_AGENT,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
h = InternetConnect(h,CNC,INTERNET_DEFAULT_HTTP_PORT,"","",INTERNET_SERVICE_HTTP,0,0);
h = HttpOpenRequest(h,"POST",server_add,NULL,NULL,NULL,0,0);
HttpSendRequest(h,"Content-Type: application/x-www-form-urlencoded\r\n",47,buffer,strlen(buffer)) //buffer is holding data that I want to send
InternetCloseHandle(h);
当server_add设置为clearnet地址(如mywebsite.com)时,代码有效;当server_add设置为tor隐藏服务器地址(如或)时,在HttpSendRequest失败

有人能指出我向隐藏服务器发送数据的方法中的错误吗?

Tor的隐藏服务“.onion”名称不是实际的internet主机名,并且不能通过正常的DNS名称解析系统转换为IP地址,因为Tor隐藏服务器根本没有(已知的)正常IP地址;只有通过使用Tor软件来完成整个Tor多跳匿名化网络过程,才能安全地访问它们。当您尝试使用上述代码连接到“mysite.onion”时,它会转到您系统配置的DNS服务,并要求它提供与“mysite.onion”对应的IP地址,并且正确地被告知internet上没有这样的地址。如果您试图使用未安装Tor软件的普通非Tor web浏览器访问mysite.onion,您也会遇到同样的问题

如果你安装了标准的Tor浏览器包,它为你做的一件事就是配置Firefox的嵌入式副本,拦截你键入的URL并查找.onion后缀,并通过Tor网络路由这些连接尝试,而不是使用普通的direct internet。但如果你想编写自己的应用程序,那么这显然没有任何好处,因为它的连接不会通过预先配置的浏览器。要在您自己的应用程序中使用.onion地址,而不是直接连接到mysite.onion,您需要连接到Tor软件的内置SOCKS代理服务器功能,该功能充当中介,以获取针对Tor.onion URL的消息,并通过Tor网络将其传递到隐藏服务器,然后将响应传递回您的应用程序

添加:WinINet(提供上述调用的库)可以被告知使用SOCKS代理连接,前提是您的计算机上安装了Internet Explorer。注意:您根本不需要实际运行Internet Explorer,但安装它会升级默认的Windows WinINet库,其中包含SOCKS功能的改进版本。当然,现在几乎所有版本的Windows都预装了IE,所以这可能不是问题

要告诉WinINet使用SOCKS,请将InternetOpen调用更改为类似(假设默认的Tor SOCKS端口号):

然而,可能会有一些复杂的情况(当然!),我自己也没有使用过。SOCKS协议有多个版本(通常为4、4a和5),我不确定Tor和IE究竟支持哪个版本,也不确定WinINet在协商找到一个共同点方面做得如何

如果SOCKS不起作用,WinINet还可以使用HTTP代理(与SOCKS的用途相同,只是告诉它连接到谁的协议不同)。然而,由于Tor本身并不理解HTTP代理连接,所以您必须添加另一个中间软件层来处理HTTP代理请求和Tor的SOCKS支持之间的转换。幸运的是,Windows提供了优秀的免费HTTP代理处理程序,最好的可能是,这是因为它还添加了一些关键的安全功能,如仔细清理HTTP请求头,以确保它们不会向Tor hidden server泄漏任何标识信息(如果有问题的话)(即使您信任Tor服务器的管理员,也可以想象有一天他们的服务器会被发现并被扣押,他们的所有流量都会被记录下来)

要告诉WinINet使用HTTP代理,请使用以下命令(使用默认的Privoxy端口号):


您应该已经启动并运行。

即使我的应用程序试图通过www将其数据传输到洋葱代理(如tor2web.org或onion.org),通过常规http端口80与应用程序进行通信,也需要套接字编程吗?理论上,您的原始代码应该可以使用这些代理,但我发现它们是无效的不可靠,可能是因为流量太大。反正我也不会使用它们,因为它们不能保护用户的计算机和他们的站点之间的用户id或信息,而且事实上可能会监控和记录他们在clearnet端的所有流量(这似乎是抓住那些试图使用丝绸之路的人的一种简单而明显的方法,等等)。
h = InternetOpen(USER_AGENT, INTERNET_OPEN_TYPE_PROXY, "SOCKS=localhost:9050", NULL, 0);
h = InternetOpen(USER_AGENT, INTERNET_OPEN_TYPE_PROXY, "http=http://localhost:8118", NULL, 0);