Что нового

[Сеть, интернет] работа с интернет через proxy

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
Требуется попасть в интернет, через proxy с авторизацией.
Код:
HttpSetProxy ( mode [, "proxy:port" [, "username", "password"]] )

не помогает, пробывал и с параметрами IE, и забивал вручную. видимо из за этого:
Код:
Only CERN proxy servers are supported.
А для WinHttp вроде бы нельзя задать подключение с авторизацией, или я плохо смотрел.
Есть варианты решения?
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
r35p3ct

Как я понял отсюда, есть proxy-серверы, которые поддерживают стандарт CERN и которые не поддерживают...
Наверное, надо искать такой proxy-сервер, который поддерживает стандарт CERN...

Это предположение...
 
Автор
R

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
Проблема в том, это proxy на работе, тоесть выбрать другой нельзя.
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
r35p3ct
Посмотри, может вот этот скрипт будет полезен (источник)

Код:
;set parameters for using 
Global $UseIntegratedSecurity = False
Global $ProxyServer = "10.0.0.1:8080"
Global $ProxyUser = "username" ;if $UseIntegratedSecurity is true (and working), these can be blank
Global $ProxyPass = "password"

;create WinHttpRequest object for downloading config info
Global $oHttp = ObjCreate ("WinHttp.WinHttpRequest.5.1")
$oHttp.SetProxy(2,$ProxyServer) ; PRECONFIG = 0 (default), DIRECT = 1, PROXY = 2

$sHTML = httpget("http://www.google.com")
ConsoleWrite($sHTML & @CRLF)

func httpget($url)
    $COMerrnotify = false
    
    If $UseIntegratedSecurity Then
        $oHttp.SetAutoLogonPolicy(0) ; Always = 0, OnlyIfBypassProxy = 1, Never = 2
    Else
        $oHttp.SetAutoLogonPolicy(2) ; Always = 0, OnlyIfBypassProxy = 1, Never = 2
    EndIf
    
    $status = $oHttp.Open("GET", $url,false)
    
    If Not $UseIntegratedSecurity Then
        $oHttp.SetCredentials($ProxyUser,$ProxyPass,0) ; HTTPREQUEST_SETCREDENTIALS_FOR_SERVER = 0
    EndIf
    
    
    $oHttp.Send()
    if $oHttp.Status <> "200" then
        $status = $oHttp.Status
        $StatusText = $oHttp.StatusText
        Consolewrite("Status: " & $status & @crlf)
        Consolewrite("StatusText: " & $StatusText & @crlf)
        $COMerrnotify = true
        SetError(1)
        return $status & " - " & $StatusText        
    Else
        $COMerrnotify = true
        SetError(0)
        Consolewrite("Response Headers: " & $oHttp.GetAllResponseHeaders & @crlf)
        return $oHttp.ResponseText
    EndIf
    
EndFunc

;_IEErrorHandlerRegister("ComErrFunc")
$oIEErrorHandler = ObjEvent("AutoIt.Error","ComErrFunc")
global $COMerrnotify = true
Func ComErrFunc()
    If IsObj($oIEErrorHandler) Then
        if $COMerrnotify then
            ConsoleWrite("--> ComErrFunc: COM Error Encountered in " & @ScriptName & @CR)
            ConsoleWrite("----> Scriptline = " & $oIEErrorHandler.scriptline & @CR)
            ConsoleWrite("----> Number Hex = " & Hex($oIEErrorHandler.number, 8) & @CR)
            ConsoleWrite("----> Number = " & $oIEErrorHandler.number & @CR)
            ConsoleWrite("----> Win Description = " & StringStripWS($oIEErrorHandler.WinDescription, 2) & @CR)
            ConsoleWrite("----> Description = " & StringStripWS($oIEErrorHandler.description, 2) & @CR)
            ConsoleWrite("----> Source = " & $oIEErrorHandler.Source & @CR)
            ConsoleWrite("----> Help File = " & $oIEErrorHandler.HelpFile & @CR)
            ConsoleWrite("----> Help Context = " & $oIEErrorHandler.HelpContext & @CR)
            ConsoleWrite("----> Last Dll Error = " & $oIEErrorHandler.LastDllError & @crlf)
        EndIf
        $HexNumber = Hex($oIEErrorHandler.number, 8)
        SetError($HexNumber)
    Else
        SetError(1)
    EndIf
    Return 0
EndFunc
 
Автор
R

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
То, что нужно :laugh:
Код:
Global $ProxyServer = "10.10.10.10:8080"
Global $ProxyUser = "name"
Global $ProxyPass = "pass"
$oHttp.SetProxy(2,$ProxyServer)
$oHttp.SetCredentials($ProxyUser,$ProxyPass,0)
 

HukpoFuJl

AццkuЙ HukpoFuJl
Сообщения
98
Репутация
38
Брр, может глупость скажу - но голова совсем щас не варит...
Как поставить прокси - это понятно, всё работает отлично... А как его убрать?

$oHttp.SetProxy (2,"") ?
 
Автор
R

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
Видимо...
Код:
$oHttp.SetProxy(1)
 

HukpoFuJl

AццkuЙ HukpoFuJl
Сообщения
98
Репутация
38
Эмм... что-то это всё то ли и изначально не работало (я спросони проверял), или просто перестало работать по каким-либо причинам...
Хотел уточнить, правильно ли я вообще всю суть операции понимаю...
Прокси устанавливается где именно? Какие настройки и где при этом изменяются?
Я предполагаю, что это здесь:
Я прав?
Если да, то ни $oHttp.SetProxy (2,$proxy), ни HttpSetProxy (2,$proxy) у меня эту настройку менять категорически не хотят :(
Хелп ми...

_____
OS: Windows 7 x86
AutoIt 3.3.6.1
 
Автор
R

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
Эта опция применима только для
Код:
$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")

к IE это никакого отношения не имеет.
 

HukpoFuJl

AццkuЙ HukpoFuJl
Сообщения
98
Репутация
38
r35p3ct сказал(а):
Эта опция применима только для
Код:
$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")

к IE это никакого отношения не имеет.
Ну почему сразу IE? Свойства обозревателя не только для него прописываются...

Действительно, сделал следующее:
Код:
$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
$oHttp.SetProxy(1)
Sleep (3000)
$oHTTP.Open("GET", "http://2ip.ru/")
$oHTTP.Send("")
$oHTTP.WaitForResponse
FileWrite("no_proxy.htm",$oHTTP.Responsetext)
$oHttp.SetProxy(2,"212.45.5.172:3128")
Sleep (3000)
$oHTTP.Open("GET", "http://2ip.ru/")
$oHTTP.Send("")
$oHTTP.WaitForResponse
FileWrite("yes_proxy.htm",$oHTTP.Responsetext)
TrayTip ("Finish","",2000)
Sleep (3000)

И да, страницы выдались разные с разными IP...

Тогда вопрос: Как установить прокси не для WinHttp, а именно в свойствах обозревателя? И не для локалки, а для подключения по умолчанию (ну в общем там, где у меня на скриншоте показано было)...
 
Верх