Jump to content

[FREE] Sparkasse API-Endpoint für URL via Stadt suchen


Aerik
  • Reply to this topic
  • Start new topic

Recommended Posts

Da aktuell sowieso wortwörtlich alles nur noch gegatekeeped wird, veröffentliche ich hier ein Code-Snippet womit ihr via. Stadt, Postleitzahl oder Filialenname nach der URL suchen könnt.

 

Hier sieht ihr die Funktion, womit man schon mal die ganzen Institute grabben kann anhand Stadt, PLZ etc.

async getInstitute(query) {
        const response = await axios.get(
            `https://www.sparkasse.de/api/institutes?query=${query}`,
            {
                headers: {
                    "accept": "application/json, text/plain, */*",
                    "accept-language": "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7",
                    "priority": "u=1, i",
                    "sec-ch-ua": "\"Not;A=Brand\";v=\"99\", \"Google Chrome\";v=\"139\", \"Chromium\";v=\"139\"",
                    "sec-ch-ua-mobile": "?0",
                    "sec-ch-ua-platform": "\"Windows\"",
                    "sec-fetch-dest": "empty",
                    "sec-fetch-mode": "cors",
                    "sec-fetch-site": "same-origin"
                },
                referrer: "https://www.sparkasse.de/standorte",
                withCredentials: true
            }
        );
        
        return response.data.institutes.items;
    }

 

Wenn man dann die Bankleitzahl hat, kann man dann auch die URL ganz leicht herbekommen.

async getURL(blz, login = true) {
        try {
            const response = await axios.get(`https://redirector.webservices.sparkasse.de/?tu_key=banking-servicebox&tu_bez=content&blz=${blz}`, {
                headers: {
                    "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
                    "accept-language": "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7",
                    "priority": "u=0, i",
                    "sec-ch-ua": "\"Not;A=Brand\";v=\"99\", \"Google Chrome\";v=\"139\", \"Chromium\";v=\"139\"",
                    "sec-ch-ua-mobile": "?0",
                    "sec-ch-ua-platform": "\"Windows\"",
                    "sec-fetch-dest": "document",
                    "sec-fetch-mode": "navigate",
                    "sec-fetch-site": "same-site",
                    "sec-fetch-user": "?1",
                    "upgrade-insecure-requests": "1"
                },
                referrer: "https://www.sparkasse.de/",
                withCredentials: true,
                maxRedirects: 0,
                validateStatus: (status) => status === 302 
            });

            let formattedUrl;
            
            if (login) {
                formattedUrl = response.headers["location"]
                    .replace("/de/home/service/online-mobile-banking.html", "/de/home/login-online-banking.html")
                    .replace("/de/home/privatkunden/online-mobile-banking.html", "/de/home/login-online-banking.html");
            }
            
            console.log(`[RESPONSE]: ${login ? formattedUrl : response}`);
            return login ? formattedUrl : response;
        } catch (error) {
            if (error.response && error.response.status === 302) {
                let formattedUrl;
            
                if (login) {
                    formattedUrl = response.headers["location"]
                        .replace("/de/home/service/online-mobile-banking.html", "/de/home/login-online-banking.html")
                        .replace("/de/home/privatkunden/online-mobile-banking.html", "/de/home/login-online-banking.html");
                }

                console.log(`[ERROR RESPONSE]: ${login ? formattedUrl : error.response.headers["location"]}`);
                return login ? formattedUrl : error.response.headers["location"];
            }
            throw error;
        }
    }

 

Falls ihr ein Checker oder derartiges damit bauen wollt, hab ich direkt auch es so gemacht das die URL gereplaced wird mit der Login URL.

Ich hoffe ihr könnt was damit anfangen, lasst es mich gerne wissen wenn ich euch damit weiter geholfen habe.

 

Mit freundlichen Grüßen

Alles, was ich hier poste, ist frei erfunden und Teil eines sozialen Selbstexperiments. Die Inhalte haben keinen Bezug zu meinem echten Leben und spiegeln weder meine tatsächlichen Erfahrungen noch meine persönliche Meinung wider. Ähnlichkeiten mit realen Personen oder Ereignissen sind rein zufällig. Dieses Projekt dient ausschließlich Beobachtungs- und Reflexionszwecken.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...