Проверка подлинности прокси twitteR с ROAuth
Я пытаюсь использовать пакет twitteR от RStudio.
Однако я получаю ошибку:
"Требуется аутентификация через прокси", а иногда - "не удается найти хост".
Есть много тем с такой же проблемой.
Я все перепробовала (--internet2,R by setting "~/Rgui.exe" http_proxy=http:/999.99.99.99:8080/ http_proxy_user=ask
). Но это не сработало.
Найдите мой код ниже (я работаю с рабочего стола моего офиса, RStudio), который требует аутентификации: proxyuserpwd="**domain//username:pwd**"
,
Я не уверен насчет этой линии. Я пробовал разные комбинации, но никто не работал.
rm(list=ls())
library(twitteR)
library(ROAuth)
library(RCurl)
options(RCurlOptions = list(
verbose = TRUE,
proxy ="http://proxy1.domain.com:8080",
proxyuserpwd="domain//username:pwd",
proxyauth="ntlm"))
reqURL <- "http://api.twitter.com/oauth/request_token"
accessURL <- "http://api.twitter.com/oauth/access_token"
authURL <- "http://api.twitter.com/oauth/authorize"
consumerKey <- '.............'
consumerSecret <- '..........'
twitCred <- OAuthFactory$new(consumerKey=consumerKey,
consumerSecret=consumerSecret,
requestURL=reqURL,
accessURL=accessURL,
authURL=authURL)
download.file(url="http://curl.haxx.se/ca/cacert.pem",destfile="cacert.pem")
twitCred$handshake(cainfo="cacert.pem")
< Proxy-Authenticate: BASIC realm="Access to this server requires AD Authentication. Prefix your user ID with domain."
Host: api.twitter.com
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 221
Content-Type: application/x-www-form-urlencoded
Error: Proxy Authentication Required
> registerTwitterOAuth(twitCred)
< HTTP/1.1 407 Proxy Authentication Required
* Authentication problem. Ignoring this.
< Proxy-Authenticate: NTLM
< Cache-Control: no-cache
< Pragma: no-cache
< Content-Type: text/html; charset=utf-8
* HTTP/1.1 proxy connection set close!
< Proxy-Connection: close
< Set-Cookie: BCSI-CS-3bf0ea03406bba28=2; Path=/
< Connection: close
< Content-Length: 899
<
* Closing connection #0
Error in registerTwitterOAuth(twitCred) :
oauth has not completed its handshake
Однако, когда я пытался с приведенным ниже кодом.
library("RCurl")
opts <- list(
proxy = "proxy1.domain.com",
proxyusername = "domain",
proxypassword = "pwd",
proxyport = 8080
)
getURL("http://stackru.com", .opts = opts)
... Я успешен.
>sessionInfo()
R version 2.15.1 (2012-06-22)
Platform: i386-pc-mingw32/i386 (32-bit)
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] twitteR_1.1.7 rjson_0.2.13 ROAuth_0.9.3 digest_0.6.3 RCurl_1.95-4.1 bitops_1.0-5
loaded via a namespace (and not attached):
[1] tools_2.15.1
Я попробовал решения Multiple Threads отсюда и ни одно из них не сработало. Я не уверен, где я делаю ошибку (это домен, который мне нужно добавить вместе с именем пользователя, меня беспокоит) Может кто-нибудь пролить свет на эту проблему.
ОБНОВИТЬ:
Когда я запустил тот же код в RGui (настройка "~/Rgui.exe" http_proxy=http:/999.99.99.99:8080/http_proxy_user=ask), он запросил имя пользователя и пароль для загрузки cacert.pem.
Но когда я пытаюсь рукопожатие, он выдает ту же ошибку:
Ошибка: требуется проверка подлинности прокси.
ОБНОВИТЬ:
Я получаю следующую ошибку:Error in function (type, msg, asError = TRUE) :
Received HTTP code 407 from proxy after CONNECT
ОБНОВЛЕНИЕ Как Томас предложил - попробовал
reqURL <- "https://api.twitter.com/oauth/request_token"
accessURL <- "https://api.twitter.com/oauth/access_token"
authURL <- "http://api.twitter.com/oauth/authorize"
consumerKey <- '-----'
consumerSecret <- '-------'
twitCred <- OAuthFactory$new(consumerKey=consumerKey,
consumerSecret=consumerSecret,
requestURL=reqURL,
accessURL=accessURL,
authURL=authURL)
h <- getCurlHandle(
proxy = "proxy1.domain.com",
proxyusername = "username", #but i have to always prefix my domain with username(Domain\username or domain\\username or domain//username)
proxypassword = "password",
proxyport = 8080,
cainfo = "cacert.pem")
twitCred$handshake(curl=h)
Я получил следующую ошибкуError in strsplit(response, "&") : non-character argument
я обновляю ссылку с выходом трассировки5: strsplit(response, "&")
4: lapply(X = X, FUN = FUN, ...)
3: sapply(strsplit(response, "&")[[1]], strsplit, "=")
2: parseResponse(resp)
1: twitCred$handshake(curl = h)
3 ответа
Я действительно ничего не знаю о прокси-серверах, но почему бы вам не попробовать это для своей строки рукопожатия (явно указав дескриптор curl):
h <- getCurlHandle(
proxy = "proxy1.domain.com",
proxyusername = "domain",
proxypassword = "pwd",
proxyport = 8080,
cainfo = "cacert.pem")
twitCred$handshake(curl=h)
Спасибо, Томас, за помощь - я решил проблему.
rm(list=ls())
library(twitteR)
library(ROAuth)
library(RCurl)
reqURL <- "http://api.twitter.com/oauth/request_token"
accessURL <- "http://api.twitter.com/oauth/access_token"
authURL <- "http://api.twitter.com/oauth/authorize"
consumerKey <- '-----'
consumerSecret <- '------'
twitCred <- OAuthFactory$new(consumerKey=consumerKey,
consumerSecret=consumerSecret,
requestURL=reqURL,
accessURL=accessURL,
authURL=authURL)
h <- getCurlHandle(
proxy = "proxy1.domain.com",
proxyusername = "username",
proxypassword = "pwd",
proxyport = 8080, cainfo = "cacert.pem")
twitCred$handshake(curl=h)
To enable the connection, please direct your web browser to:
http://api.twitter.com/oauth/authorize?oauth_token=6VJ4mdc71BxVtgbI6YT0eNHqFCGe41f28MjiHl2KSvs
When complete, record the PIN given to you and provide it here:
Я заменил https на http
Я также работаю за прокси-сервером и смог получить доступ к твиттеру, используя следующий код.
consumer_key <- '<put your consumer key here>'
consumer_secret <- '<put your consumer secret here>'
access_token <- "<put your access token here>"
access_secret <- "<put your access token secret here>"
set_config(use_proxy(url='proxy- address',port-number, username, password))
setup_twitter_oauth(consumer_key,consumer_secret, access_token , access_secret)
И был в состоянии получить твиты. Я также написал блог с пошаговой процедурой для решения этой проблемы. Вы можете получить к нему доступ из http://analyticsinall.blogspot.in/search/label/Analytics%20for%20Business