8 07 2025
Python Script für automatisierte EU VIES UID Prüfung, Lösung zu Fehlermeldung: MS_MAX_CONCURRENT_REQ, MS_UNAVAILABLE
Problemstellung: der EU VIES Prüfdienst https://ec.europa.eu/taxation_customs/vies der die Gültigkeit von UID Nummern prüfen soll fällt insbesondere für deutsche UID Nummern immer wieder mal aus, gestern/heute scheint er 24h nicht verfügbar gewesen zu sein, weil der deutsche Server hinter dem EU Service überlastet ist oder nicht verfügbar ist … Der EU VIES Dienst ist dann zwar online und verfügbar, im Hintergrund wird aber der deutsche Server aufgerufen der häufig Probleme macht. Anstelle dem Prüfergebnis erhält man dann Fehlermeldungen wie z.B. MS_UNAVAILABLE oder MS_MAX_CONCURRENT_REQ … also probiert man immer wieder vergeblich und verschwendet (mal wieder) kostbate Zeit für von vorneherein vermeidbare Bürokratie 😉
Lösung #1: Falls Sie Interesse an einem ec.europa.eu PROXY Service für Ihren Webshop haben, den man kinderleicht zwischen den EU-Service und den bestehenden eigenen Webshop schalten kann, um die MS_MAX_CONCURRENT_REQ und/oder MS_UNAVAILABLE abzufedern und dadurch keine Kunden/Bestellungen zu verlieren, schreiben Sie mir: info (ät) interssl.com … KEINE Code-Änderung am eigenen Webshop notwendig!
Lösung #2: Ein Script dem man die UID Nummer übergibt, das alle 5 Minuten prüft solange bis der Dienst wieder funktioniert. Das Ergebnis wird dann als Screenshot gemailt, damit man den Nachweis der Prüfung dokumentiert hat und später ggf. nach der UID Nummer in der Mail-Inbox suchen kann.
Script-Aufruf:
python3 vies_check.py DE12345678
Script Code für “vies_check.py”:
#sudo apt update #sudo apt install python3 python3-pip chromium-driver #pip3 install selenium import time import sys import smtplib from email.message import EmailMessage from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # === KONFIGURATION === EMAIL_ABSENDER = "info@firma.com" EMAIL_EMPFAENGER = "info@firma.com" EMAIL_SERVER = "my.mailserver.com" EMAIL_PORT = 587 EMAIL_USER = "mailversanduser" EMAIL_PASSWORT = "mailversandkennwort" WIEDERHOLUNG_IN_SEKUNDEN = 300 # alle 5 Minuten erneut versuchen def pruefe_uid(uid): chrome_options = Options() chrome_options.add_argument("--headless") chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-dev-shm-usage") driver = webdriver.Chrome(options=chrome_options) try: driver.get("https://ec.europa.eu/taxation_customs/vies/#/vat-validation") wait = WebDriverWait(driver, 20) driver.set_window_size(1440, 1440) # Cookie-Overlay schließen, wenn es erscheint try: accept_button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.wt-cck--btn-accept-all"))) accept_button.click() print("Cookie-Banner akzeptiert.") time.sleep(1) # Kurze Pause nach dem Klick except: print("Kein Cookie-Banner sichtbar oder bereits geschlossen.") # UID in Land + Nummer aufteilen laendercode = uid[:2] nummer = uid[2:] # Container loswerden driver.execute_script(""" let el = document.querySelector('.wt-cck--container'); if (el) { el.style.display = 'none'; } """) # Felder ausfüllen driver.find_element(By.ID, "select-country").click() time.sleep(1) driver.find_element(By.XPATH, f"//option[contains(text(), '{laendercode}')]").click() driver.find_element(By.XPATH, f"//input[@type='text']").send_keys(nummer) # Absenden driver.find_element(By.XPATH, f"//button[@type='submit']").click() # Auf Ergebnis warten time.sleep(20) # Prüfen, ob Ergebnis angezeigt wird if "gültig" in driver.page_source or "ungültig" in driver.page_source: screenshot_path = f"vat_check_{uid}.png" driver.save_screenshot(screenshot_path) return screenshot_path else: print("Ergebnis nicht verfügbar oder Server überlastet.") return None finally: driver.quit() def sende_email(mit_datei, uid): msg = EmailMessage() msg["Subject"] = f"Manuelle UID Prüfung {uid}" msg["From"] = EMAIL_ABSENDER msg["To"] = EMAIL_EMPFAENGER msg.set_content(f"Anbei das Ergebnis der VAT UID Prüfung für {uid}.") with open(mit_datei, "rb") as f: file_data = f.read() msg.add_attachment(file_data, maintype="image", subtype="png", filename=mit_datei) with smtplib.SMTP(EMAIL_SERVER, EMAIL_PORT) as server: server.starttls() server.login(EMAIL_USER, EMAIL_PASSWORT) server.send_message(msg) print(f"E-Mail mit Screenshot wurde gesendet an {EMAIL_EMPFAENGER}.") def main(): if len(sys.argv) < 2: print("Nutzung: python3 vies_check.py ATU12345678") sys.exit(1) uid = sys.argv[1] while True: print(f"Versuche UID {uid} zu prüfen...") screenshot = pruefe_uid(uid) if screenshot: sende_email(screenshot, uid) break else: print(f"Fehler bei Prüfung, versuche es erneut in {WIEDERHOLUNG_IN_SEKUNDEN} Sekunden...") time.sleep(WIEDERHOLUNG_IN_SEKUNDEN) if __name__ == "__main__": main()
DIE beste Anleitung zur Karosserie- und Stoßstangenreparatur in Eigenleistung! TeamViewer Alternativen
Comments are currently closed.