我想在R.Tor的getURL函数中使用Tor (在火狐中选中),在port 9050上使用socks5。但是,当我在R中设置它时,我会得到以下错误
html <- getURL("http://www.google.com", followlocation = T, .encoding="UTF-8", .opts = list(proxy = "127.0.0.1:9050", timeout=15))curlPerform中的错误(curl= curl,.opts = opts,.encoding = .encoding):‘\n\n nTor不是HTTP代理\n\n\n Tor不是HTTP代理 \n\n看来您已将web浏览器配置为使用Tor作为HTTP代理。\n这是不正确的: Tor是SOCKS代理,而不是HTTP代理。\n请相应配置客户端。
我试过用socks代替代理,socks5,但它没有起作用。
发布于 2013-09-22 17:28:25
有R的卷曲绑定,之后可以使用curl调用Tor SOCKS5代理服务器。
来自shell的调用(可以转换为R绑定)是:
curl --socks5-hostname 127.0.0.1:9050 google.com
Tor也会为A记录做DNS。
发布于 2014-02-27 23:27:36
RCurl将默认为HTTP,但是Tor提供了一个SOCKS代理。Tor非常聪明,能够理解代理客户端(RCurl)正在尝试使用HTTP,因此Tor返回的HTML中出现了错误消息。
为了获得使用SOCKS代理的RCurl和curl,可以使用协议前缀,SOCKS5有两个协议前缀:"socks5“和"socks5h”(参见卷曲手册)。后者将让SOCKS服务器处理DNS-查询,这是使用Tor时的首选方法(实际上,如果让代理客户端解析主机名,Tor将警告您)。
这里是一个纯R解决方案,它将使用Tor进行dns-查询。
library(RCurl)
options(RCurlOptions = list(proxy = "socks5h://127.0.0.1:9050"))
my.handle <- getCurlHandle()
html <- getURL(url='https://www.torproject.org', curl=my.handle)如果要指定其他参数,请参见下面关于放置这些参数的位置:
library(RCurl)
options(RCurlOptions = list(proxy = "socks5h://127.0.0.1:9050",
useragent = "Mozilla",
followlocation = TRUE,
referer = "",
cookiejar = "my.cookies.txt"
)
)
my.handle <- getCurlHandle()
html <- getURL(url='https://www.torproject.org', curl=my.handle)发布于 2013-10-02 15:46:30
嗨,我真的很想知道如何做你提议的解决方案,选项应该是: opts <- list(socks5.hostname="127.0.0.1:9050") (这是行不通的,因为socks5.hostname不是选项)
https://stackoverflow.com/questions/17925234
复制相似问题