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 os
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 "valid VAT number" 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)
os.remove(screenshot)
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.