WinHTTP Proxyauth

  • Hi,

    wir haben eine Datenbank mir Rund 4000 Adresse von verschiedenen Firmen. Leider ist diese schon älter und keiner weiß wirklich ob die Adresse noch existieren. Nun dachte ich mir ich mache ein Script das im Internet auf verschiedenen Seiten prüft ob die Adresse noch existiert. Wollte das nun mit der WinHTTP-UDF: klick mich realisieren. Allerdings haben wir eine Proxy der eine Authentifizierung erfordert. Zwar habe ich in der UDF die Möglichkeit einen Proxy zu setzen aber leider keine Möglichkeit einen Nutzernamen und Passwort zu übergeben. Weiß jemand wie bzw. was ich verändern muss damit ich diese beiden Parameter übergeben kann?

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Klar kannst du die Nutzerdaten für den Proxy einstellen ;)
    Ich habe aber bemerkt, dass das Einstellen eines Proxys nur für einen Session (kein Standardproxy) gar nicht so einfach ist. So sollte es funktionieren:

    [autoit]

    Global Const $tagWINHTTP_PROXY_INFO = "DWORD dwAccessType;ptr lpszProxy;ptr lpszProxyBypass;"

    [/autoit][autoit][/autoit][autoit]

    Func _WinHttpProxyInfoCreate($dwAccessType, $sProxy, $sProxyBypass)
    Local $tWINHTTP_PROXY_INFO = DllStructCreate($tagWINHTTP_PROXY_INFO&'wchar proxychars[' & StringLen($sProxy)+1 & ']; wchar proxybypasschars[' & StringLen($sProxyBypass)+1 & ']')
    DllStructSetData($tWINHTTP_PROXY_INFO, "dwAccessType", $dwAccessType)
    DllStructSetData($tWINHTTP_PROXY_INFO, "lpszProxy", DllStructGetPtr($tWINHTTP_PROXY_INFO, 'proxychars'))
    DllStructSetData($tWINHTTP_PROXY_INFO, "lpszProxyBypass", DllStructGetPtr($tWINHTTP_PROXY_INFO, 'proxybypasschars'))
    DllStructSetData($tWINHTTP_PROXY_INFO, "proxychars", $sProxy)
    DllStructSetData($tWINHTTP_PROXY_INFO, "proxybypasschars", $sProxyBypass)
    Return $tWINHTTP_PROXY_INFO
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $tProxyInfo = _WinHttpProxyInfoCreate($WINHTTP_ACCESS_TYPE_NAMED_PROXY, "proxy.com", "localhost")
    _WinHttpSetOption($hInternet, $WINHTTP_OPTION_PROXY, $tProxyInfo)
    _WinHttpSetOption($hInternet, $WINHTTP_OPTION_PROXY_PASSWORD, "PASSWORD")
    _WinHttpSetOption($hInternet, $WINHTTP_OPTION_PROXY_USERNAME, "USERNAME")

    [/autoit]
  • Ich staune immer wieder was man so alles mit DLLs machen kann. Ich weis nur nicht mal wo man die Infos her bekommt.
    Hut ab ;)

    MfG
    Der_Doc

    Da bist du ehrlich gesagt nicht der einzige. ;)

    Lg, Fabian

  • Ich muss das einfach nochmal aus der Versenkung holen, weil ich es bis heute nicht hinbekommen habe.

    Habe noch diese Script von die gefunden progandy

    Spoiler anzeigen
    [autoit]

    #include <winhttp.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $sProxyServer = "PROXY"
    $hw_open = _WinHttpOpen("AutoIt v3 WinHTTP with Proxy ", $WINHTTP_ACCESS_TYPE_NAMED_PROXY, $sProxyServer)
    _WinHttpSetOption($hw_open, $WINHTTP_OPTION_PROXY_PASSWORD, "PASSWORD")
    _WinHttpSetOption($hw_open, $WINHTTP_OPTION_PROXY_USERNAME, "USERNAME")

    [/autoit] [autoit][/autoit] [autoit]

    $hw_connect = _WinHttpConnect($hw_open, "www.wieistmeineip.de")
    $h_openRequest = _WinHttpOpenRequest($hw_connect)
    _WinHttpSendRequest($h_openRequest)
    _WinHttpReceiveResponse($h_openRequest)
    MsgBox(0, '', _WinHttpQueryHeaders($h_openRequest))
    If _WinHttpQueryDataAvailable($h_openRequest) Then
    Local $data=""
    Do
    $data&=_WinHttpReadData($h_openRequest)
    Until @error
    MsgBox(0, '', $data)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _WinHttpCloseHandle($h_openRequest)
    _WinHttpCloseHandle($hw_connect)
    _WinHttpCloseHandle($hw_open)

    [/autoit]

    da bekomme ich zumindestens eine Rückmeldung:

    Vom _WinHttpQueryHeaders kommt das hier:

    Spoiler anzeigen


    Und von _WinHttpReadData das hier:

    Spoiler anzeigen

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.