;~ #include ;~ #include ; COM-Fehler anzeigen Global $oMyError = ObjEvent("AutoIt.Error", "_ComErrFunc") Global $g_iReqCounter = 0 ; Zähler für 01.header.txt, 01.response.txt, ... Global $sUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:146.0) Gecko/20100101 Firefox/146.0" Global $sEVHOST = "https://evergabe.telekom.de" Global $sPfadIni = @ScriptDir & "\daten\conf.ini" ;~ $sUsername = "fkramer_kpt" ;IniRead($sPfadIni, "EVergabe", "Benutzer", "xxx") ;~ $sPasswort = "Kpfk99LixCkpt!" ;IniRead($sPfadIni, "EVergabe", "Passwort", "xxx") ;~ $sRetrunLogin = _EV_Lobin_obj($sUsername, $sPasswort) ;~ If $sRetrunLogin = "True" Then ;~ ConsoleWrite("Login Erfolgreich" & @CRLF) ;~ _Write_to_Console("Login Erfolgreich") ;~ $sSMnr = "211293040" ;~ ;~ $aSMDeatails = _EV_Search_SM_obj($oHttp, $sSMnr) ;~ _DebugArrayDisplay($aSMDeatails) ;~ _Write_to_Console($sHTML) ;~ Else ;~ _Write_to_Console("Login Fehler!!!") ;~ ;~ EndIf ;test SM 208878700 Func _EV_Lobin_obj($sUsername, $sPasswort) Global $oHttp = _HttpCreate() Local $sHtml = _HttpGet($oHttp, $sEVHOST & "/public/login") Local $sCsrfField = "" Local $sCsrfValue = _ExtractCsrf($sHtml, $sCsrfField) ; 3. Cookies zu Debugzwecken Local $sSetCookie = $oHttp.GetResponseHeader("Set-Cookie") ConsoleWrite("+ Set-Cookie: " & $sSetCookie & @CRLF) Local $sBody = _ "LoginForm[username]=" & _UrlEncode_obj($sUsername) & _ "&LoginForm[password]=" & _UrlEncode_obj($sPasswort) & _ "&" & $sCsrfField & "=" & _UrlEncode_obj($sCsrfValue) _Write_to_Console($sBody) ;~ MsgBox(64, "", "") $oHttp = _HttpPost($oHttp, $sEVHOST & "/public/login", $sBody) Local $iStatus = $oHttp.Status Local $sResp = $oHttp.ResponseText If $iStatus <> 302 And StringInStr($sResp, "Logout") = 0 Then ConsoleWrite("! Login fehlgeschlagen, HTTP " & $iStatus & @CRLF) Return "False" Else Return "True" EndIf EndFunc ;==>_EV_Lobin_obj Func _EV_Search_SM_obj($oHttp, $sSMnr) If Not IsObj($oHttp) Then MsgBox(16, "Fehler", "_EV_Search_SM: HTTP-Objekt ist ungültig.") Return "" EndIf ; hier wird DEINE _HttpGet()-Funktion genutzt Local $sHtml = _HttpGet($oHttp, $sEVHOST & "/framework-agreement-call?OrderRecallSearch%5Bhead_line%5D=" & $sSMnr & "&OrderRecallSearch%5Bdocument_no%5D=&OrderRecallSearch%5Bincoming_date%5D=&OrderRecallSearch%5Border_date%5D=&OrderRecallSearch%5Bgeneral_agreement_id%5D=&OrderRecallSearch%5Bdocument_state%5D=-1", "https://www.evergabe.telekom.de/framework-agreement-call") _Write_to_Console("Suche SM-Nr: | " & $sSMnr) ; optional: kurze Ausgabe, ob Nummer in der Seite vorkommt If StringInStr($sHtml, $sSMnr) > 0 Then _Write_to_Console("+ _EV_Search_SM: Treffer für " & $sSMnr & " gefunden." & @CRLF) $aTitle = _EV_Abrufliste_GET_Title_obj($sHtml) $aBedarfnr = _EV_Abrufliste_GET_Bedarfnr_obj($sHtml) ;SMnr $aBelegEinDatum = _EV_Abrufliste_GET_Belegeingang_obj($sHtml) ;Eingang E-Vergabe $aBelegnr = _EV_Abrufliste_GET_Belegnr_obj($sHtml) ;42Nr $aAusfuehrungsfrist = _EV_Abrufliste_GET_Ausfuehrungsfrist_obj($sHtml) ;Ausführungsfrist $aDetailID = _EV_Abrufliste_GET_DetailsID_obj($sHtml) ;DetailsID intern für E-Vergabe $aRV = _EV_Abrufliste_GET_RV_obj($sHtml) ;Rahmenvertrag $aStatus = _EV_Abrufliste_GET_Status_obj($sHtml) ;Status Angenommen Abgelehnt usw. Dim $aReturn[UBound($aTitle)][8] ;~ _DebugArrayDisplay($aReturn) For $i = 0 To UBound($aTitle) - 1 $aReturn[$i][0] = $aTitle[$i] $aReturn[$i][1] = $aBedarfnr[$i] $aReturn[$i][2] = $aBelegnr[$i] $aReturn[$i][3] = $aDetailID[$i] $aReturn[$i][4] = $aRV[$i] $aReturn[$i][5] = $aBelegEinDatum[$i] $aReturn[$i][6] = $aAusfuehrungsfrist[$i] $aReturn[$i][7] = $aStatus[$i] Next ;~ _DebugArrayDisplay($aReturn) Return $aReturn Else _Write_to_Console("! _EV_Search_SM: Kein Treffer für " & $sSMnr & " gefunden." & @CRLF) EndIf EndFunc ;==>_EV_Search_SM_obj Func _EV_Hole_Kopfdaten_obj() $sUsername = IniRead(@ScriptDir & "\daten\conf.ini", "EVergabe", "Benutzer", "xxx") $sPasswort = IniRead(@ScriptDir & "\daten\conf.ini", "EVergabe", "Passwort", "xxx") $sRetrunLogin = _EV_Lobin_obj($sUsername, $sPasswort) If $sRetrunLogin = "True" Then ;~ ConsoleWrite("Login Erfolgreich" & @CRLF) _Write_to_Console("Login Erfolgreich") $sSMnr = GUICtrlRead($kopf_tab_txt_smnr) If $sSMnr = "" Then _Write_to_Console("keine SMnr im Feld Kopfdaten") Else $aSMDeatails = _EV_Search_SM_obj($oHttp, $sSMnr) ;~ _DebugArrayDisplay($aSMDeatails) ;~ Row|Col 0|Col 1|Col 2|Col 3|Col 4|Col 5|Col 6|Col 7 ;~ Row 0|Bahnhofstr. 16-18 78224 Singen SM 209173009|209173009|4213308114|19487501|4650014601|30.01.2025|17.05.2025|Angenommen If UBound($aSMDeatails) > 1 Then ;~ ConsoleWrite(UBound($aArrayList) & @CRLF) $sDetailsID = _create_Gui_Ausw($aSMDeatails) ;~ MsgBox(64, "123124", $sDetailsID) $aAspadetails = _EV_Aspa_obj($sDetailsID) ;~ _DebugArrayDisplay($aAspadetails) GUICtrlSetData($kopf_TAB_txt_aspa, $aAspadetails[0]) GUICtrlSetData($kopf_TAB_txt_telnr, $aAspadetails[2]) GUICtrlSetData($kopf_TAB_txt_detailsID, $sDetailsID) _Write_to_Console("hole Kopfdaten erledigt.") Else $aAspadetails = _EV_Aspa_obj($aSMDeatails[0][3]) ;~ _DebugArrayDisplay($aAspadetails) GUICtrlSetData($kopf_TAB_txt_aspa, $aAspadetails[0]) GUICtrlSetData($kopf_TAB_txt_abrufnr, $aSMDeatails[0][2]) GUICtrlSetData($kopf_TAB_datum_start, $aSMDeatails[0][5]) GUICtrlSetData($kopf_TAB_txt_datum_ende, $aSMDeatails[0][6]) GUICtrlSetData($kopf_TAB_txt_detailsID, $aSMDeatails[0][3]) GUICtrlSetData($kopf_TAB_txt_telnr, $aAspadetails[2]) _Write_to_Console("hole Kopfdaten erledigt.") EndIf EndIf Else _Write_to_Console("Login Fehler!!!") EndIf ;~ _EV_Logout() EndFunc ;==>_EV_Hole_Kopfdaten_obj Func _EV_Pos_eintragen_obj($aInhalt) $sDatum = GUICtrlRead($kopf_tab_txt_datum) $sBaustelle = GUICtrlRead($kopf_tab_txt_baustelle) $sBauabschnitt = GUICtrlRead($kopf_tab_txt_bauabschnitt) $sAbrufNR = GUICtrlRead($kopf_tab_txt_abrufnr) $sSMnr = GUICtrlRead($kopf_tab_txt_smnr) $sVertrag = GUICtrlRead($kopf_tab_chb_vertrag) $sStartDatum = GUICtrlRead($kopf_tab_datum_start) $sEndDatum = GUICtrlRead($kopf_tab_txt_datum_ende) IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Datum", $sDatum) IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Baustelle", $sBaustelle) IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Bauabschnitt", $sBauabschnitt) IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "AbrufNr", $sAbrufNR) IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "SMNr", $sSMnr) IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Vertrag", $sVertrag) IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "StartZ", $sStartDatum) IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "EndZ", $sEndDatum) $sUsername = IniRead(@ScriptDir & "\daten\conf.ini", "EVergabe", "Benutzer", "xxx") $sPasswort = IniRead(@ScriptDir & "\daten\conf.ini", "EVergabe", "Passwort", "xxx") $sRetrunLogin = _EV_Lobin_obj($sUsername, $sPasswort) If $sRetrunLogin = "True" Then ;~ ConsoleWrite("Login Erfolgreich" & @CRLF) _Write_to_Console("Login Erfolgreich") Global $sDetailsID $sSMnr = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "SMNr", "") If IsArray($aInhalt) Then _Write_to_Console("Suche SM-Nr: | " & $sSMnr) $aArrayList = _EV_Search_SM_obj($oHttp, $sSMnr) ;~ _DebugArrayDisplay($aArrayList) If UBound($aArrayList) > 1 Then $sDetailsID = _create_Gui_Ausw($aArrayList) Else $sDetailsID = $aArrayList[0][3] EndIf _Write_to_Console("DetailsID: " & $sDetailsID) _Write_to_Console("Öffne DetailsID : | " & StringReplace($sDetailsID, "&c=1", "")) ;~ $sHtml = _send_WinhttpS_GET($aHosts[1][1], "/framework-agreement-call/details?id=" & $sDetailsID & "&c=1", "https://www.evergabe.telekom.de/") Local $sHtml = _HttpGet($oHttp, $sEVHOST & "/framework-agreement-call/details?id=" & $sDetailsID & "&c=1", "https://www.evergabe.telekom.de/framework-agreement-call") If Not StringInStr($sHtml, 'LERF nicht möglich') Then ;LEB anlegen ;~ $sHtml = _send_WinhttpS_GET($aHosts[1][1], "/sheet/index?c=1&importId=" & $sDetailsID, "https://www.evergabe.telekom.de/" & "/framework-agreement-call/details?id=" & $sDetailsID & "&c=1") $sHtml = _HttpGet($oHttp, $sEVHOST & "/sheet/index?c=1&importId=" & $sDetailsID, "https://www.evergabe.telekom.de/" & "/framework-agreement-call/details?id=" & $sDetailsID & "&c=1") ;~ $sHtml = _send_WinhttpS_GET($aHosts[1][1], "/sheet/create-sheet?c=1&id=" & $sDetailsID, "https://www.evergabe.telekom.de/" & "/sheet/index?c=1&importId=" & $sDetailsID) ;evtl nicht direkt eingabe $sHtml = _HttpGet($oHttp, $sEVHOST & "/sheet/create-sheet?c=1&id=" & $sDetailsID, "https://www.evergabe.telekom.de/" & "/sheet/index?c=1&importId=" & $sDetailsID) ;evtl nicht direkt eingabe ;~ $sCSRF = _EV_GET_CSRF($sHtml) ;~ Local $sCSRF = "False" Local $sCsrfField = "" Local $sCsrfValue = _ExtractCsrf($sHtml, $sCsrfField) $sLeist_zeitv = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "StartZ", "") $sLeist_zeitb = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "EndZ", "") ; mit UrlEncode $sLeistungsort1 = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Baustelle", "") If StringLen($sLeistungsort1) >= 25 Then $sLeistungsortso = $sLeistungsort1 $sLeistungsort1 = StringMid($sLeistungsort1, 1, 25) Else $sLeistungsortso = $sLeistungsort1 EndIf $sLeistungsort = _URIEncode($sLeistungsort1) ; max 25 Zeichen $sSachbearbeiter = IniRead(@ScriptDir & "\daten\conf.ini", "EVergabe", "Name", "xxx") If StringLen($sSachbearbeiter) >= 12 Then $sSachbearbeiter_temp = $sSachbearbeiter $sSachbearbeiter = StringMid($sSachbearbeiter_temp, 1, 12) ;~ $sSachbearbeiter = $sSachbearbeiter_temp EndIf $sBauabschnitt = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Bauabschnitt", "") If StringLen($sBauabschnitt) >= 40 Then $sBauabschnitt = StringMid($sBauabschnitt, 1, 39) EndIf $sBauabschnitt = _URIEncode($sBauabschnitt) $sKurztext = "SM " ; max 40 Zeichen $sKurztext = StringReplace($sKurztext, "SM ", "SM " & $sSMnr) If StringLen($sKurztext) >= 40 Then $sKurztext = StringMid($sKurztext, 1, 39) EndIf $sKurztext = _URIEncode($sKurztext) ; mit UrlEncode $s_SMnrINi = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "SMNr", $sSMnr) $sLangtext = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Baustelle", "") & " " & IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Bauabschnitt", "") & " " & "SM " & $s_SMnrINi & @CRLF & GUICtrlRead($tab_plan_ed_SListe) ;~ $sLangtext = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Baustelle", "") & " " & IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Bauabschnitt", "") & " " & "SM " & $sSMnr; alt $sLangtext = _URIEncode($sLangtext) Sleep(1000) ;~ MsgBox(64, "Langtext", $sLangtext) $sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF & "Content-Type: application/x-www-form-urlencoded" & @CRLF & "Origin: https://www.evergabe.telekom.de" & @CRLF & "Upgrade-Insecure-Requests: 1" & @CRLF & "Sec-Fetch-Dest: document" & @CRLF & "Sec-Fetch-Mode: navigate" & @CRLF & "Sec-Fetch-Site: same-origin" & @CRLF & "Sec-Fetch-User: ?1" & @CRLF If GUICtrlRead($kopf_TAB_rd_teilauf) = $GUI_CHECKED Then $sPost = "_csrf=" & $sCsrfValue & "%3D%3D&BapiEssr%5Bfinal%5D=&BapiEssr%5Bfinal%5D=&BapiEssr%5Blzvon%5D=" & $sLeist_zeitv & "&BapiEssr%5Blzbis%5D=" & $sLeist_zeitb & "&BapiEssr%5Bdlort%5D=" & $sLeistungsort & "&BapiEssr%5Bsbnaman%5D=" & $sSachbearbeiter & "&BapiEssr%5Btxz01%5D=" & $sBauabschnitt & "&BapiEssr%5Bdescription%5D=" & $sLangtext & "&save+sheets=" EndIf If GUICtrlRead($kopf_TAB_rd_schluss) = $GUI_CHECKED Then $sPost = "_csrf=" & $sCsrfValue & "%3D%3D&BapiEssr%5Bfinal%5D=&BapiEssr%5Bfinal%5D=X&BapiEssr%5Blzvon%5D=" & $sLeist_zeitv & "&BapiEssr%5Blzbis%5D=" & $sLeist_zeitb & "&BapiEssr%5Bdlort%5D=" & $sLeistungsort & "&BapiEssr%5Bsbnaman%5D=" & $sSachbearbeiter & "&BapiEssr%5Btxz01%5D=" & $sBauabschnitt & "&BapiEssr%5Bdescription%5D=" & $sLangtext & "&save+sheets=" Else $sPost = "_csrf=" & $sCsrfValue & "%3D%3D&BapiEssr%5Bfinal%5D=&BapiEssr%5Bfinal%5D=&BapiEssr%5Blzvon%5D=" & $sLeist_zeitv & "&BapiEssr%5Blzbis%5D=" & $sLeist_zeitb & "&BapiEssr%5Bdlort%5D=" & $sLeistungsort & "&BapiEssr%5Bsbnaman%5D=" & $sSachbearbeiter & "&BapiEssr%5Btxz01%5D=" & $sBauabschnitt & "&BapiEssr%5Bdescription%5D=" & $sLangtext & "&save+sheets=" EndIf ;weiter bei EVergabe.au3 in Zeile 386 ;~ $aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "POST", "/sheet/create-sheet?c=1&iid=" & $sDetailsID, "https://www.evergabe.telekom.de/sheet/create-sheet?c=1&iid=" & $sDetailsID, $sPost, $sHeader, True) $sHtml = _HttpPost($oHttp, $sEVHOST & "/sheet/create-sheet?c=1&iid=" & $sDetailsID, $sPost, "https://www.evergabe.telekom.de/sheet/create-sheet?c=1&iid=" & $sDetailsID) $sRespBody = $oHttp.ResponseText ;~ ClipPut($sHtml) ;~ MsgBox(64, "stop", "stop") $aSheetID = StringRegExp($sRespBody, 'sheetId=(.*)">Kopfdaten', 3) ;~ _DebugArrayDisplay($aSheetID) If IsArray($aSheetID) Then Global $iSheetID = $aSheetID[0] For $i = 0 To UBound($aInhalt) - 1 $sHtml = _HttpGet($oHttp, $sEVHOST & "/sheet-position/index?c=1&sheetId=" & $aSheetID[0], "https://www.evergabe.telekom.de/" & "/sheet/index?c=1&importId=" & $sDetailsID) ;evtl nicht direkt eingabe $sPositionNr = $aInhalt[$i][1] Local $sCsrfField = "" Local $sCsrfValue = _ExtractCsrf($sHtml, $sCsrfField) $sPost = "_csrf=" & $sCsrfValue & "%3D%3D&ServicePosition%5Bnumber%5D=" & $sPositionNr & "&insertPosition=0" ;~ $aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "POST", "/sheet-position/index?c=1&sheetId=" & $aSheetID[0], "https://www.evergabe.telekom.de/sheet-position/index?c=1&sheetId=" & $aSheetID[0], $sPost, "", True) $sHtml = _HttpPost($oHttp, $sEVHOST & "/sheet-position/index?c=1&sheetId=" & $aSheetID[0], $sPost, "https://www.evergabe.telekom.de/sheet-position/index?c=1&sheetId=" & $aSheetID[0]) $sHtml = $oHttp.ResponseText ;~ ClipPut($sHtml) ;~ MsgBox(64, "stop", "stop") $aPosID = StringRegExp($sHtml, 'positionId=([^&]+)', 3) If IsArray($aPosID) Then $iSheetID = $aSheetID[0] ;~ $sHTML = _send_WinhttpS_GET($aHosts[1][1], "/sheet-position/create?insertPosition=0&positionId=" & $aPosID[0] & "&c=1&sheetId=" & $iSheetID, "") $sHtml = _HttpGet($oHttp, $sEVHOST & "/sheet-position/create?insertPosition=0&positionId=" & $aPosID[0] & "&c=1&sheetId=" & $iSheetID, "https://www.evergabe.telekom.de/" & "/sheet/index?c=1&importId=" & $sDetailsID) ;evtl nicht direkt eingabe Local $sCsrfField = "" Local $sCsrfValue = _ExtractCsrf($sHtml, $sCsrfField) Local $sCSRF = $sCsrfValue Select Case $aInhalt[$i][7] = "ST" ;bei Stück _EV_ADD_ST_insert_obj($i, $aInhalt[$i][0], $aInhalt[$i][9], $aInhalt[$i][10], $aPosID[0], $iSheetID, $sCSRF, $aInhalt[$i][1] & "|" & $aInhalt[$i][8]) ;~ _EV_ADD_ST_insert($aInhalt[$i][0], $aInhalt[$i][9], $aInhalt[$i][10], $aPosID[0], $iSheetID, $sCSRF) ;~ GUICtrlSetData($lbl_status,"Position: "&$aInhalt[$i][1] & " "& $aInhalt[$i][0] " hinzugefügt!") Case $aInhalt[$i][7] = "M" ; bei Meter _EV_ADD_M_insert_obj($i, $aInhalt[$i][0], $aInhalt[$i][9], $aInhalt[$i][2], $aInhalt[$i][3], $aPosID[0], $iSheetID, $sCSRF, $aInhalt[$i][1] & "|" & $aInhalt[$i][8]) ; alt ;~ _EV_ADD_M_insert($aInhalt[$i][0], $aInhalt[$i][9], $aInhalt[$i][2], $aInhalt[$i][3], $aPosID[0], $iSheetID, $sCSRF, $aInhalt[$i][1] & "|" & $aInhalt[$i][8]) ;~ GUICtrlSetData($lbl_status,"Position: "&$aInhalt[$i][1] & " "& $aInhalt[$i][0] " hinzugefügt!") Case $aInhalt[$i][7] = "M2" ; bei m2 _EV_ADD_M2_insert_obj($i, $aInhalt[$i][0], $aInhalt[$i][9], $aInhalt[$i][2], $aInhalt[$i][3], $aInhalt[$i][4], $aPosID[0], $iSheetID, $sCSRF, $aInhalt[$i][1] & "|" & $aInhalt[$i][8]) ;~ GUICtrlSetData($lbl_status,"Position: "&$aInhalt[$i][1] & " "& $aInhalt[$i][0] " hinzugefügt!") Case $aInhalt[$i][7] = "M3" ;m3 _EV_ADD_M3_insert_obj($i, $aInhalt[$i][0], $aInhalt[$i][9], $aInhalt[$i][2], $aInhalt[$i][3], $aInhalt[$i][4], $aInhalt[$i][5], $aPosID[0], $iSheetID, $sCSRF, $aInhalt[$i][1] & "|" & $aInhalt[$i][8]) ;~ GUICtrlSetData($lbl_status,"Position: "&$aInhalt[$i][1] & " "& $aInhalt[$i][0] " hinzugefügt!") Case $aInhalt[$i][7] = "STD" ; STD _EV_ADD_STD_insert_obj($i, $aInhalt[$i][0], $aInhalt[$i][9], $aInhalt[$i][10], $aPosID[0], $iSheetID, $sCSRF, $aInhalt[$i][1] & "|" & $aInhalt[$i][8]) ;~ GUICtrlSetData($lbl_status,"Position: "&$aInhalt[$i][1] & " "& $aInhalt[$i][0] " hinzugefügt!") Case $aInhalt[$i][7] = "LE" ; LE _EV_ADD_LE_insert_obj($i, $aInhalt[$i][0], $aInhalt[$i][9], $aInhalt[$i][10], $aPosID[0], $iSheetID, $sCSRF, $aInhalt[$i][1] & "|" & $aInhalt[$i][8]) ;~ GUICtrlSetData($lbl_status,"Position: "&$aInhalt[$i][1] & " "& $aInhalt[$i][0] " hinzugefügt!") EndSelect EndIf Next Else _Write_to_Console("sheetID link=> " & $sHtml & " Pattern: " & "sheetId=(.*)") EndIf EndIf Else _Write_to_Console("kein Aufmaß gefunden!") EndIf Else _Write_to_Console("Login Fehler!!!") EndIf EndFunc ;==>_EV_Pos_eintragen_obj Func _EV_ADD_LE_insert_obj($iZeile, $sAbschnitt, $sLangtext, $iLE, $iPosNrID, $iSheetID, $sCSRF, $sPosNrKurztext) If StringLen($sAbschnitt) >= 25 Then $sAbschnitt = StringMid($sAbschnitt, 1, 25) EndIf $sAbschnitt = _UrlEncode_obj($sAbschnitt) $sLongText = _UrlEncode_obj($sLangtext) ; max 40 $iLE = StringReplace($iLE, ",", "%2C") $sPost = "_csrf=" & $sCSRF & "%3D%3D&ServicePosition%5B0%5D%5BsectionText%5D=" & $sAbschnitt & "&ServicePosition%5B0%5D%5Bquantity%5D=" & $iLE & "&ServicePosition%5B0%5D%5BlongText%5D=" & $sLongText & "&ServicePosition%5B0%5D%5Bid%5D=" & $iPosNrID & "&clientId=1&sheetId=" & $iSheetID & "&insertPosition=" & $iZeile & "&save=" ;~ &ServicePosition%5B0%5D%5BsectionText%5D=VAO &ServicePosition%5B0%5D%5Bquantity%5D=100 &ServicePosition%5B0%5D%5BlongText%5D=VAO &ServicePosition%5B0%5D%5Bid%5D=43945349 &clientId=1&sheetId=0006425482&insertPosition=0&save= ;~ $sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF & "Content-Type: application/x-www-form-urlencoded" & @CRLF ;~ $aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "POST", "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, "https://www.evergabe.telekom.de//sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, $sHeader, True) $sHtml = _HttpPost($oHttp, $sEVHOST & "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, "https://www.evergabe.telekom.de//sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID) $sHtml = $oHttp.ResponseText ;~ ClipPut($sHtml) ;~ MsgBox(64, "stop", "stop") If StringInStr($sHtml, "erfolgreich gespeichert") Then _Write_to_Console($sPosNrKurztext & "|" & "... eingetragen!") Else _Write_to_Console($sPosNrKurztext & "|" & "... Fehlgeschlagen") EndIf EndFunc ;==>_EV_ADD_LE_insert_obj Func _EV_ADD_STD_insert_obj($iZeile, $sAbschnitt, $sLangtext, $iStueck, $iPosNrID, $iSheetID, $sCSRF, $sPosNrKurztext) If StringLen($sAbschnitt) >= 25 Then $sAbschnitt = StringMid($sAbschnitt, 1, 25) EndIf $sAbschnitt = _UrlEncode_obj($sAbschnitt) $sLongText = _UrlEncode_obj($sLangtext) ; max 40 $iStueck = StringReplace($iStueck, ",", "%2C") ;~ $sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF & "Content-Type: application/x-www-form-urlencoded" & @CRLF $sPost = "_csrf=" & $sCSRF & "%3D%3D&ServicePosition%5B0%5D%5BsectionText%5D=" & $sAbschnitt & "&ServicePosition%5B0%5D%5Bquantity%5D=" & $iStueck & "&ServicePosition%5B0%5D%5BlongText%5D=" & $sLongText & "&ServicePosition%5B0%5D%5Bid%5D=" & $iPosNrID & "&clientId=1&sheetId=" & $iSheetID & "&insertPosition=" & $iZeile & "&save=" ;~ $aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "POST", "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, "https://www.evergabe.telekom.de/sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, $sHeader, True) $sHtml = _HttpPost($oHttp, $sEVHOST & "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, "https://www.evergabe.telekom.de//sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID) $sHtml = $oHttp.ResponseText ;~ ClipPut($sHtml) ;~ MsgBox(64, "stop", "stop") If StringInStr($sHtml, "erfolgreich gespeichert") Then _Write_to_Console($sPosNrKurztext & "|" & "... eingetragen!") Else _Write_to_Console($sPosNrKurztext & "|" & "... Fehlgeschlagen") EndIf EndFunc ;==>_EV_ADD_STD_insert_obj Func _EV_ADD_M3_insert_obj($iZeile, $sAbschnitt, $sLangtext, $sFaktor, $iLang, $iBreit, $iTief, $iPosNrID, $iSheetID, $sCSRF, $sPosNrKurztext) If StringLen($sAbschnitt) >= 25 Then $sAbschnitt = StringMid($sAbschnitt, 1, 25) EndIf $sAbschnitt = _UrlEncode_obj($sAbschnitt) $sFaktor = StringReplace($sFaktor, ",", "%2C") $sLongText = _UrlEncode_obj($sLangtext) ; max 40 $iLang = StringReplace($iLang, ",", "%2C") $iBreit = StringReplace($iBreit, ",", "%2C") $iTief = StringReplace($iTief, ",", "%2C") $sPost = "_csrf=" & $sCSRF & "%3D%3D&ServicePosition%5B0%5D%5BsectionText%5D=" & $sAbschnitt & "&ServicePosition%5B0%5D%5BformulaSymbol%5D=MV&ServicePosition%5B0%5D%5BformulaValueMultiplier%5D=" & $sFaktor & "&ServicePosition%5B0%5D%5BformulaValueLength%5D=" & $iLang & "&ServicePosition%5B0%5D%5BformulaValueWidth%5D=" & $iBreit & "&ServicePosition%5B0%5D%5BformulaValueDepth%5D=" & $iTief & "&ServicePosition%5B0%5D%5BlongText%5D=" & $sLongText & "&ServicePosition%5B0%5D%5Bid%5D=" & $iPosNrID & "&clientId=1&sheetId=" & $iSheetID & "&insertPosition=" & $iZeile & "&save=" ;~ $sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF & "Content-Type: application/x-www-form-urlencoded" & @CRLF ;~ $aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "POST", "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, "https://www.evergabe.telekom.de/sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, $sHeader, True) ;~ _DebugArrayDisplay($aHTML) $sHtml = _HttpPost($oHttp, $sEVHOST & "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, "https://www.evergabe.telekom.de//sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID) $sHtml = $oHttp.ResponseText If StringInStr($sHtml, "erfolgreich gespeichert") Then _Write_to_Console($sPosNrKurztext & "|" & "... eingetragen!") Else _Write_to_Console($sPosNrKurztext & "|" & "... Fehlgeschlagen") EndIf EndFunc ;==>_EV_ADD_M3_insert_obj Func _EV_ADD_M2_insert_obj($iZeile, $sAbschnitt, $sLangtext, $sFaktor, $iLang, $iBreit, $iPosNrID, $iSheetID, $sCSRF, $sPosNrKurztext) If StringLen($sAbschnitt) >= 25 Then $sAbschnitt = StringMid($sAbschnitt, 1, 25) EndIf $sAbschnitt = _UrlEncode_obj($sAbschnitt) ;~ $sFaktor = StringReplace($sFaktor, ",", ".") ;~ If $sFaktor = "1.0" Then ;~ $sFaktor = "1" ;~ EndIf ;~ If $sFaktor = "1,0" Then ;~ $sFaktor = "1" ;~ EndIf $sFaktor = StringReplace($sFaktor, ",", "%2C") $sLongText = _UrlEncode_obj($sLangtext) ; max 40 $iLang = StringReplace($iLang, ",", "%2C") $iBreit = StringReplace($iBreit, ",", "%2C") ;~ $sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF & "Content-Type: application/x-www-form-urlencoded" & @CRLF $sPost = "_csrf=" & $sCSRF & "%3D%3D&ServicePosition%5B0%5D%5BsectionText%5D=" & $sAbschnitt & "&ServicePosition%5B0%5D%5BformulaSymbol%5D=MF&ServicePosition%5B0%5D%5BformulaValueMultiplier%5D=" & $sFaktor & "&ServicePosition%5B0%5D%5BformulaValueLength%5D=" & $iLang & "&ServicePosition%5B0%5D%5BformulaValueWidth%5D=" & $iBreit & "&ServicePosition%5B0%5D%5BlongText%5D=" & $sLongText & "&ServicePosition%5B0%5D%5Bid%5D=" & $iPosNrID & "&clientId=1&sheetId=" & $iSheetID & "&insertPosition=" & $iZeile & "&save=" ;~ $aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "POST", "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, "https://www.evergabe.telekom.de/sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, $sHeader, True) ;~ _DebugArrayDisplay($aHTML) $sHtml = _HttpPost($oHttp, $sEVHOST & "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, "https://www.evergabe.telekom.de//sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID) $sHtml = $oHttp.ResponseText ;~ ClipPut($sHtml) ;~ MsgBox(64, "stop", "stop") If StringInStr($sHtml, "erfolgreich gespeichert") Then _Write_to_Console($sPosNrKurztext & "|" & "... eingetragen!") Else _Write_to_Console($sPosNrKurztext & "|" & "... Fehlgeschlagen") EndIf EndFunc ;==>_EV_ADD_M2_insert_obj Func _EV_ADD_ST_insert_obj($iZeile, $sAbschnitt, $sLangtext, $iStueck, $iPosNrID, $iSheetID, $sCSRF, $sPosNrKurztext) If StringLen($sAbschnitt) >= 25 Then $sAbschnitt = StringMid($sAbschnitt, 1, 25) EndIf $sAbschnitt = _UrlEncode_obj($sAbschnitt) $sLongText = _UrlEncode_obj($sLangtext) ; max 40 $iStueck = StringReplace($iStueck, ",", "%2C") ;~ $sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF & "Content-Type: application/x-www-form-urlencoded" & @CRLF $sPost = "_csrf=" & $sCSRF & "%3D%3D&ServicePosition%5B0%5D%5BsectionText%5D=" & $sAbschnitt & "&ServicePosition%5B0%5D%5Bquantity%5D=" & $iStueck & "&ServicePosition%5B0%5D%5BlongText%5D=" & $sLongText & "&ServicePosition%5B0%5D%5Bid%5D=" & $iPosNrID & "&clientId=1&sheetId=" & $iSheetID & "&insertPosition=" & $iZeile & "&save=" ;~ $aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "POST", "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, "https://www.evergabe.telekom.de/sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, $sHeader, True) ;~ _DebugArrayDisplay($aHTML) $sHtml = _HttpPost($oHttp, $sEVHOST & "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, "https://www.evergabe.telekom.de//sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID) $sHtml = $oHttp.ResponseText ;~ ClipPut($sHtml) ;~ MsgBox(64, "stop", "stop") If StringInStr($sHtml, "erfolgreich gespeichert") Then _Write_to_Console($sPosNrKurztext & "|" & "... eingetragen!") Else _Write_to_Console($sPosNrKurztext & "|" & "... Fehlgeschlagen") EndIf EndFunc ;==>_EV_ADD_ST_insert_obj Func _EV_ADD_M_insert_obj($iZeile, $sAbschnitt, $sLangtext, $sFaktor, $sMeter, $iPosNrID, $iSheetID, $sCSRF, $sPosNrKurztext) If StringLen($sAbschnitt) >= 25 Then $sAbschnitt = StringMid($sAbschnitt, 1, 25) EndIf $sAbschnitt = _UrlEncode_obj($sAbschnitt) $sFaktor = StringReplace($sFaktor, ",", "%2C") $sMeter = StringReplace($sMeter, ",", "%2C") $sLongText = _UrlEncode_obj($sLangtext) ; max 40 ;~ $sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF & "Content-Type: application/x-www-form-urlencoded" & @CRLF & "Origin: https://www.evergabe.telekom.de" & @CRLF $sPost = "_csrf=" & $sCSRF & "%3D%3D&ServicePosition%5B0%5D%5BsectionText%5D=" & $sAbschnitt & "&ServicePosition%5B0%5D%5BformulaSymbol%5D=ME&ServicePosition%5B0%5D%5BformulaValueMultiplier%5D=" & $sFaktor & "&ServicePosition%5B0%5D%5BformulaValueLength%5D=" & $sMeter & "&ServicePosition%5B0%5D%5BlongText%5D=" & $sLongText & "&ServicePosition%5B0%5D%5Bid%5D=" & $iPosNrID & "&clientId=1&sheetId=" & $iSheetID & "&insertPosition=" & $iZeile & "&save=" ;~ ;&ServicePosition[0][sectionText]=Abschnitt&ServicePosition[0][formulaSymbol]=ME&ServicePosition[0][formulaValueMultiplier]=1&ServicePosition[0][formulaValueLength]=95&ServicePosition[0][longText]=Langtext&ServicePosition[0][id]=82627311&clientId=1&sheetId=0008943838&insertPosition=&save= ;~ ConsoleWrite($sPost & @crlf) ;~ MsgBox(64, "", "") ;~ $aHTML = _WinHttpSimpleSSLRequest($aHosts[1][1], "POST", "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&per-page=20&sheetId=" & $iSheetID, "https://www.evergabe.telekom.de/sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, $sHeader, True) ;~ _DebugArrayDisplay($aHTML) $sHtml = _HttpPost($oHttp, $sEVHOST & "/sheet-position/create?insertPosition=" & $iZeile & "&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID, $sPost, "https://www.evergabe.telekom.de//sheet-position/create?insertPosition=0&positionId=" & $iPosNrID & "&c=1&sheetId=" & $iSheetID) $sHtml = $oHttp.ResponseText ;~ ClipPut($sHtml) ;~ MsgBox(64, "stop", "stop") If StringInStr($sHtml, "erfolgreich gespeichert") Then _Write_to_Console($sPosNrKurztext & "|" & "... eingetragen!") Else _Write_to_Console($sPosNrKurztext & "|" & "... Fehlgeschlagen") EndIf EndFunc ;==>_EV_ADD_M_insert_obj Func _EV_Aspa_obj($sDetailsID) $sUrl = "https://evergabe.telekom.de/framework-agreement-call/details?id=" & $sDetailsID & "&c=1" $sRefer = "https://evergabe.telekom.de/framework-agreement-call/" $sHtml = _HttpGet($oHttp, $sUrl, $sRefer = "") Dim $aAspa[3] ;~ ClipPut($sHtml) ;~ MsgBox(64, "Read Aspa", "") $aAspaName = StringRegExp($sHtml, "Name([^<]+)", 3) $aAspaMail = StringRegExp($sHtml, 'mailto:([^"]+)', 3) $aAspaTel = StringRegExp($sHtml, 'th>Telefon([^<]+)', 3) If IsArray($aAspaTel) Then $aAspa[2] = $aAspaTel[0] Else $aAspa[2] = "" EndIf If IsArray($aAspaName) Then $aAspa[0] = $aAspaName[0] Else $aAspa[0] = "" EndIf If IsArray($aAspaMail) Then $aAspa[1] = $aAspaMail[1] Else $aAspa[1] = "" EndIf ;~ _DebugArrayDisplay($aAspa) Return $aAspa EndFunc ;==>_EV_Aspa_obj Func _EV_Abrufliste_GET_Title_obj($sQuellcode) ;Rückgabe Array sonst $error string ;~ local $aTitle = StringRegExp($sQuellcode, 'no-wrap" title="([^"]+)', 3) Local $aTitle = StringRegExp($sQuellcode, '(?m)no-wrap" title="([^"]+)', 3) ;~ _DebugArrayDisplay($aTitle) If IsArray($aTitle) Then For $i = 0 To UBound($aTitle) - 1 $aTitle[$i] = StringReplace($aTitle[$i], "SM Auftragsnummer: 000", " SM ") $aTitle[$i] = StringReplace($aTitle[$i], @CR, " ") ;CR out $aTitle[$i] = StringReplace($aTitle[$i], @LF, " ") ;LF out Next Return $aTitle Else Return "Error" EndIf EndFunc ;==>_EV_Abrufliste_GET_Title_obj Func _EV_Abrufliste_GET_Bedarfnr_obj($sQuellcode) ;SMNr ;Rückgabe Array sonst $error string Local $aBedarfnr = StringRegExp($sQuellcode, 'Bedarfsnr.: 0([^<]+)<', 3) ;~ ConsoleWrite($sQuellcode & @CRLF) ;~ _DebugArrayDisplay($aBedarfnr) ;~ MsgBox(64, "", "") If IsArray($aBedarfnr) Then Return $aBedarfnr Else Return "Error" EndIf EndFunc ;==>_EV_Abrufliste_GET_Bedarfnr_obj Func _EV_Abrufliste_GET_Belegeingang_obj($sQuellcode) ;42Nr ;Rückgabe Array sonst $error string ;~ Local $aBelegeingang = StringRegExp($sQuellcode, 'Bedarfsnr.: [^<]+[^<]+([^<]+)', 3) Local $aBelegeingang = StringRegExp($sQuellcode, '(\d\d\.\d\d\.\d\d\d\d)', 3) If IsArray($aBelegeingang) Then Return $aBelegeingang Else Return "Error" EndIf EndFunc ;==>_EV_Abrufliste_GET_Belegeingang_obj Func _EV_Abrufliste_GET_Belegnr_obj($sQuellcode) ;42Nr ;Rückgabe Array sonst $error string Local $aBelegnr = StringRegExp($sQuellcode, '(42[^\/]+)\/0001', 3) If IsArray($aBelegnr) Then Return $aBelegnr Else Return "Error" EndIf EndFunc ;==>_EV_Abrufliste_GET_Belegnr_obj Func _EV_Abrufliste_GET_Ausfuehrungsfrist_obj($sQuellcode) ;Ausführungsfrist ;Rückgabe Array sonst $error string Local $aAusfuehrungsfrist = StringRegExp($sQuellcode, '(\d\d\.\d\d\.\d\d\d\d)_EV_Abrufliste_GET_Ausfuehrungsfrist_obj Func _EV_Abrufliste_GET_DetailsID_obj($sQuellcode) ;DetailsID intern für E-Vergabe ;Rückgabe Array sonst $error string Local $aDetailsID = StringRegExp($sQuellcode, 'call/details.id=([^&]+)&c=1', 3) If IsArray($aDetailsID) Then Return $aDetailsID Else Return "Error" EndIf EndFunc ;==>_EV_Abrufliste_GET_DetailsID_obj Func _EV_Abrufliste_GET_RV_obj($sQuellcode) ;Rahmenvertrag ;Rückgabe Array sonst $error string Local $aRV = StringRegExp($sQuellcode, '/framework-agreement/details.id=[^"]+">([^/]+)', 3) If IsArray($aRV) Then Return $aRV Else Return "Error" EndIf EndFunc ;==>_EV_Abrufliste_GET_RV_obj Func _EV_Abrufliste_GET_Status_obj($sQuellcode) ;Stauts ;Rückgabe Array sonst $error string Local $aStatus = StringRegExp($sQuellcode, '/framework-agreement/details.id=[^"]+">[^"]+"[^>]+>([^<]+)', 3) If IsArray($aStatus) Then Return $aStatus Else Return "Error" EndIf EndFunc ;==>_EV_Abrufliste_GET_Status_obj Func _ComErrFunc() Local $sMsg = "COM-Fehler!" & @CRLF & _ "Beschreibung: " & @error & @CRLF & _ "Zusatzzahl: " & @extended & @CRLF ConsoleWrite("! " & $sMsg & @CRLF) MsgBox(16, "COM-Fehler", $sMsg) EndFunc ;==>_ComErrFunc Func _HttpCreate() Global $oHttp = ObjCreate("WinHttp.WinHttpRequest.5.1") If Not IsObj($oHttp) Then MsgBox(16, "Fehler", "WinHttp-Objekt konnte nicht erzeugt werden.") Exit EndIf ; Cookie Handling aktivieren $oHttp.Option(6) = True ; WinHttpRequestOption_EnableCookie Return $oHttp EndFunc ;==>_HttpCreate Func _HttpGet($oHttp, $sUrl, $sRefer = "") If Not IsObj($oHttp) Then MsgBox(16, "Fehler", "HTTP-Objekt ist ungültig vor GET.") Exit EndIf Local $sMethod = "GET" Local $sReqHeaders = "" Local $sReqBody = "" ;~ ConsoleWrite("+ GET " & $sUrl & @CRLF) $oHttp.Open($sMethod, $sUrl, False) $oHttp.SetRequestHeader("User-Agent", $sUserAgent) $oHttp.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded") If $sRefer = "" Then ;kein Refer angeben Else ;refer übergeben $oHttp.SetRequestHeader("Referer", $sRefer) EndIf ; Für Logging: Request-Header rekonstruieren (was wir selbst gesetzt haben) $sReqHeaders &= "User-Agent: " & $sUserAgent & @CRLF $sReqHeaders &= "Content-Type: application/x-www-form-urlencoded" & @CRLF If $sRefer = "" Then ;kein Refer angeben $sReqHeaders &= "User-Agent: " & $sUserAgent & @CRLF Else ;refer übergeben $sReqHeaders &= "User-Agent: " & $sUserAgent & @CRLF $sReqHeaders &= "Referer: " & $sRefer & @CRLF EndIf $oHttp.Send() Local $iStatus = $oHttp.Status ; Response-Header holen Local $sAllRespHeaders = $oHttp.GetAllResponseHeaders() Local $sRespBody = $oHttp.ResponseText $sRespBody = StringReplace($sRespBody, "amp;", "") _Write_to_Console("öffne link: " & $sUrl) If $iDebug = "True" Then _LogRequestResponse($sMethod, $sUrl, $sReqHeaders, $sReqBody, $iStatus, $sAllRespHeaders, $sRespBody) EndIf Return $sRespBody EndFunc ;==>_HttpGet Func _HttpPost($oHttp, $sUrl, $sBody, $sRefer = "") If Not IsObj($oHttp) Then MsgBox(16, "Fehler", "HTTP-Objekt ist ungültig vor POST.") Exit EndIf Local $sMethod = "POST" Local $sReqHeaders = "" Local $sReqBody = $sBody ;~ ConsoleWrite("+ POST " & $sUrl & @CRLF) $oHttp.Open($sMethod, $sUrl, False) $oHttp.SetRequestHeader("User-Agent", $sUserAgent) $oHttp.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded") If $sRefer = "" Then ;kein Refer angeben Else ;refer übergeben $oHttp.SetRequestHeader("Referer", $sRefer) EndIf ; Request-Header fürs Logging ;~ $sReqHeaders &= "User-Agent: " & $sUserAgent & @CRLF ;~ $sReqHeaders &= "Content-Type: application/x-www-form-urlencoded" & @CRLF ;~ $sReqHeaders &= "Referer: " & $sRefer & @CRLF $oHttp.Send($sBody) Local $iStatus = $oHttp.Status Local $sAllRespHeaders = $oHttp.GetAllResponseHeaders() Local $sRespBody = $oHttp.ResponseText $sRespBody = StringReplace($sRespBody, "amp;", "") $oHttp.ResponseText = StringReplace($oHttp.ResponseText, "amp;", "") _Write_to_Console("öffne link: " & $sUrl) If $iDebug = "True" Then _LogRequestResponse($sMethod, $sUrl, $sReqHeaders, $sReqBody, $iStatus, $sAllRespHeaders, $sRespBody) EndIf Return $oHttp EndFunc ;==>_HttpPost ; =================== Hilfsfunktionen ============================ Func _ExtractCsrf($sHtml, ByRef $sFieldName) ; Meta-Tag Local $aMeta = StringRegExp($sHtml, '(?i)]+name="csrf-token"[^>]+content="([^"]+)"', 3) If Not @error And UBound($aMeta) >= 1 Then $sFieldName = "_csrf" ConsoleWrite("+ CSRF (meta): " & $aMeta[0] & @CRLF) Return $aMeta[0] EndIf ; Hidden input Local $a = StringRegExp($sHtml, '(?i)name="([^"]*csrf[^"]*)"[^>]*value="([^"]+)"', 3) If @error Or UBound($a) < 2 Then ConsoleWrite("! CSRF-Token nicht gefunden" & @CRLF) FileWrite("debug_login_page.html", $sHtml) Exit EndIf $sFieldName = $a[0] ConsoleWrite("+ CSRF Feld: " & $a[0] & " = " & $a[1] & @CRLF) Return $a[1] EndFunc ;==>_ExtractCsrf Func _UrlEncode_obj($s) Local $i, $ch, $sOut = "" For $i = 1 To StringLen($s) $ch = StringMid($s, $i, 1) Local $asc = Asc($ch) If ($asc >= 48 And $asc <= 57) Or _ ($asc >= 65 And $asc <= 90) Or _ ($asc >= 97 And $asc <= 122) Or _ $ch = "-" Or $ch = "_" Or $ch = "." Or $ch = "~" Then $sOut &= $ch Else $sOut &= "%" & Hex($asc, 2) EndIf Next Return $sOut EndFunc ;==>_UrlEncode_obj Func _Pad2($i) If $i < 10 Then Return "0" & $i EndIf Return $i EndFunc ;==>_Pad2 ; Speichert Request- und Response-Daten als NN.header.txt / NN.response.txt Func _LogRequestResponse($sMethod, $sUrl, $sReqHeaders, $sReqBody, _ $iStatus, $sRespHeaders, $sRespBody) $g_iReqCounter += 1 Local $sIdx = _Pad2($g_iReqCounter) ; ----- Header-Datei ----- Local $sHeaderFile = $sIdx & ".header.txt" Local $sHeaderContent = "" $sHeaderContent &= "=== REQUEST " & $sIdx & " ===" & @CRLF $sHeaderContent &= "Method: " & $sMethod & @CRLF $sHeaderContent &= "URL: " & $sUrl & @CRLF & @CRLF $sHeaderContent &= "[Request Headers]" & @CRLF & $sReqHeaders & @CRLF & @CRLF $sHeaderContent &= "[Request Body]" & @CRLF & $sReqBody & @CRLF FileWrite($sHeaderFile, $sHeaderContent) ; ----- Response-Datei ----- Local $sRespFile = $sIdx & ".response.txt" Local $sRespContent = "" $sRespContent &= "=== RESPONSE " & $sIdx & " ===" & @CRLF $sRespContent &= "Status: " & $iStatus & @CRLF & @CRLF $sRespContent &= "[Response Headers]" & @CRLF & $sRespHeaders & @CRLF & @CRLF $sRespContent &= "[Response Body]" & @CRLF & $sRespBody & @CRLF FileWrite($sRespFile, $sRespContent) ; ----- Konsolen-Ausgabe ----- ConsoleWrite("+ ==== REQUEST " & $sIdx & " " & $sMethod & " " & $sUrl & " ====" & @CRLF) ConsoleWrite($sReqHeaders & @CRLF) If $sReqBody <> "" Then ConsoleWrite("Body:" & @CRLF & $sReqBody & @CRLF) EndIf ConsoleWrite("+ ==== RESPONSE " & $sIdx & " (HTTP " & $iStatus & ") ====" & @CRLF) ConsoleWrite($sRespHeaders & @CRLF) ConsoleWrite("Body :" & @CRLF & $sRespBody & @CRLF) _Write_to_Console("+ ==== REQUEST " & $sIdx & " " & $sMethod & " " & $sUrl & " ====") _Write_to_Console($sReqHeaders) If $sReqBody <> "" Then _Write_to_Console("Body:" & @CRLF & $sReqBody) EndIf _Write_to_Console("+ ==== RESPONSE " & $sIdx & " (HTTP " & $iStatus & ") ====") _Write_to_Console($sRespHeaders) _Write_to_Console("Body :" & @CRLF & $sRespBody) EndFunc ;==>_LogRequestResponse