User-Agent für _INetGetSource ändern

  • Hallo!
    Wie kann ich den User-Agent für INetGetSource ändern? In der Inet.au3 im AutoIt Programmverzeichnis finde ich keine Einstellung diesbezüglich...
    Hintergrund: bplaced.net akzeptiert den Standart-Agent von AutoIt nicht.
    Danke!

    3 Mal editiert, zuletzt von petter2 (27. Dezember 2009 um 21:32)

  • In 3.3.0.0 konnte man ihn auch noch in der Inet.au3 ändern, aber jetzt die Funktion anscheinend anders aufgebaut. Sind nur noch ein paar Zeilen, das wesentliche findet in InetRead statt und das ist nicht mehr open source.

    Haste

    [autoit]

    HttpSetUserAgent

    [/autoit]


    mal ausprobiert?

    Ansonst kann ich dir nur noch eine WinHTTP Möglichkeit anbieten.

  • Hab 3.3.0.0 noch auf meinem Netbook drauf, da war es noch open source:

    Spoiler anzeigen
    [autoit]

    Func _INetGetSource($s_URL, $s_Header = '')

    If StringLeft($s_URL, 7) <> 'http://' And StringLeft($s_URL, 8) <> 'https://' Then $s_URL = 'http://' & $s_URL

    Local $h_DLL = DllOpen("wininet.dll")

    Local $ai_IRF, $s_Buf = ''

    Local $ai_IO = DllCall($h_DLL, 'int', 'InternetOpen', 'str', "AutoIt v3", 'int', 0, 'int', 0, 'int', 0, 'int', 0)
    If @error Or $ai_IO[0] = 0 Then
    DllClose($h_DLL)
    SetError(1)
    Return ""
    EndIf

    Local $ai_IOU = DllCall($h_DLL, 'int', 'InternetOpenUrl', 'int', $ai_IO[0], 'str', $s_URL, 'str', $s_Header, 'int', StringLen($s_Header), 'int', 0x80000000, 'int', 0)
    If @error Or $ai_IOU[0] = 0 Then
    DllCall($h_DLL, 'int', 'InternetCloseHandle', 'int', $ai_IO[0])
    DllClose($h_DLL)
    SetError(1)
    Return ""
    EndIf

    Local $v_Struct = DllStructCreate('udword')
    DllStructSetData($v_Struct, 1, 1)

    While DllStructGetData($v_Struct, 1) <> 0
    $ai_IRF = DllCall($h_DLL, 'int', 'InternetReadFile', 'int', $ai_IOU[0], 'str', '', 'int', 256, 'ptr', DllStructGetPtr($v_Struct))
    $s_Buf &= StringLeft($ai_IRF[2], DllStructGetData($v_Struct, 1))
    WEnd

    DllCall($h_DLL, 'int', 'InternetCloseHandle', 'int', $ai_IOU[0])
    DllCall($h_DLL, 'int', 'InternetCloseHandle', 'int', $ai_IO[0])
    DllClose($h_DLL)
    Return $s_Buf
    EndFunc ;==>_INetGetSource

    [/autoit]



    AutoIt v3 ist der Agent, einfach ändern.

    Edit: Scheint aber trotzdem nicht mit 3.3.2.0 zu gehen.

    2 Mal editiert, zuletzt von Greek (27. Dezember 2009 um 21:17)

  • Vielen Dank für die ganzen Antworten!
    mit
    HttpSetUserAgent
    hat es tatsächlich geklappt!
    Und ich dachte immer, das mit neuen AutoIt Versionen nur Vorteile und keine Nachteile gibt....
    Nochmals Vielen Dank!

  • HttpSetUserAgent funktioniert mit InetGet und InetRead. Da in der neuen AutoIt-Version _InetGetSource intern InetRead verwendet (ist nur noch ein Wrapper), gilt der Useragent auch dafür ;)