Aansluitbaarheid adres checken Fiberklaar

Alles over programmeren en development binnen de IT-wereld
Gebruikersavatar
JoskeVermeulen
Premium Member
Premium Member
Berichten: 681
Lid geworden op: 22 aug 2012, 00:04
Locatie: Liedekerke
Uitgedeelde bedankjes: 63 keer
Bedankt: 75 keer
Recent bedankt: 2 keer

Bericht

Puur uit nieuwsgierigheid probeer ik een script op te stellen dat de aansluitbaarheid van een adres checkt op Fiberklaar zonder te moeten wachten op de officiële mail. Vanwege de dynamische opbouw van de website lukt het me niet om adres te inputten via Selenium/Beautifulsoup (Python). De API dat ze gebruiken lijkt afgeschermd te zijn waardoor dit ook geen optie is. Iemand verder enig idee wat ik kan proberen? Hoeft niet Python te zijn maar maakt het wel gemakkelijk met mijn huidige setup in Ubuntu.
:troosten:
TV: Afbeelding
ISP: Afbeelding
Tel.: Afbeelding
YordiDR
Member
Member
Berichten: 62
Lid geworden op: 28 mei 2022, 08:31
Uitgedeelde bedankjes: 5 keer
Bedankt: 10 keer
Recent bedankt: 1 keer

Bericht

Kan je niet met curl de data posten in de velden die ze willen? Dus eigenlijk de webform invullen zoals een gebruiker dat doet.
Ik heb geen ervaring met web scrapers zoals beautifulsoup dus misschien werken die al zo.

Sent from my BE2029 using Tapatalk

Gebruikersavatar
silentkiller
Premium Member
Premium Member
Berichten: 509
Lid geworden op: 24 jun 2008, 13:36
Locatie: Limburg
Uitgedeelde bedankjes: 39 keer
Bedankt: 73 keer

Bericht

Je kan de webpage scrapen.. of hem proberen te analyseren :evil:

Als je via de developer tools in je browser de 'network' tab open doet, zie je welke interactie er over de lijn gaat.
Voor fiberklaar zie je dan dat er achterliggend een API gecalled wordt. De URL lijkt wel uniek per adres.

Ik heb eens snel gekeken en mogelijks kan het je op weg zetten:
Adelardstraat 1 in Beringen (geen fiber):

Code: Selecteer alles

https://widget.fiberklaar.be/api/v1/widget/decision/1550921?address=Adelardstraat+1&postalCode=3580
Nieuwstrat 10 in Geel (wel fiber):

Code: Selecteer alles

https://widget.fiberklaar.be/api/v1/widget/decision/1126374?address=Nieuwstraat+10&postalCode=2440
Het stukje achter 'decision' lijkt precies uniek per adres. Een keer je die URL hebt, kan je hem wel gebruiken in je code.

Als headers stuur ik gewoon mee wat mijn browser meestuurt. Hier zit een authorization code in maar die lijkt niet te veranderen (toch niet als ik mijn browser herstart of een andere URL gebruik). Je kan hiervoor een tool als 'Postman' gebruiken of een online variant (bv Reqbin). Dit moet je uiteindelijk in je code implementeren.

Code: Selecteer alles

Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Authorization: 33d276a4ccb300ac30b8336ee50ea67c8b6ac423c30043aaf6d2a07568b1ad96
Host: widget.fiberklaar.be
Locale: nl
Origin: https://www.fiberklaar.be
Referer: https://www.fiberklaar.be/nl/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.43
X-Requested-With: XMLHttpRequest
sec-ch-ua: "Not.A/Brand";v="8", "Chromium";v="114", "Microsoft Edge";v="114"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Response van de API in geval geen fiber:

Code: Selecteer alles

{
    "flow": "AddressNotFoundInAC",
    "scenario": 8,
    "redirect_url": "https:\/\/www.fiberklaar.be\/nl\/adres-niet-gekend-postcode-gekend",
    "is_positive": false,
    "is_known_in_ac": false,
    "is_enabled": false,
    "is_orderable": false
}
Response van de API in geval van fiber:

Code: Selecteer alles

{
    "flow": "BUILD",
    "redirect_url": "https:\/\/www.fiberklaar.be\/nl\/adres-aansluitbaar-bouw",
    "secondary_cta_url": "https:\/\/www.fiberklaar.be\/nl\/projecten\/geel-DG0050",
    "address": {
        "id": 256325,
        "tzip": "BE_GV5BA16",
        "dhid": "dhid1_0723668402",
        "address": "Nieuwstraat 10",
        "street": "Nieuwstraat",
        "house_number": "10",
        "box": "",
        "postal_code": "2440",
        "municipality": "Geel",
        "enable": true,
        "orderable": true,
        "area": {
            "name": "Geel",
            "project_page": "https:\/\/www.fiberklaar.be\/nl\/projecten\/geel-DG0050",
            "municipal_page_url": "https:\/\/www.fiberklaar.be\/nl\/projecten\/geel",
            "number": "Geel-0051",
            "planned_status_link": "https:\/\/www.fiberklaar.be\/nl\/adres-aansluitbaar-planned",
            "campaign_status_link": "https:\/\/www.fiberklaar.be\/nl\/adres-aansluitbaar-campagne",
            "build_status_link": "https:\/\/www.fiberklaar.be\/nl\/adres-aansluitbaar-bouw",
            "done_status_link": "https:\/\/www.fiberklaar.be\/nl\/sluit-je-aan",
            "status": 4
        }
    },
    "is_positive": true,
    "scenario": 9,
    "is_known_in_ac": true,
    "is_enabled": true,
    "is_orderable": true
}
Succes!
Gebruikersavatar
JoskeVermeulen
Premium Member
Premium Member
Berichten: 681
Lid geworden op: 22 aug 2012, 00:04
Locatie: Liedekerke
Uitgedeelde bedankjes: 63 keer
Bedankt: 75 keer
Recent bedankt: 2 keer

Bericht

Daarmee is het gelukt! Ik moest ook "Preserve log" inschakelen om die decission ID te kunnen zien want de pagina vernieuwd zich bij uitvoeren van request.

Bij een adres waar ze nog met de uitrol bezig zijn is dit de response:

Code: Selecteer alles

{
    "flow": "NotEnabled",
    "redirect_url": "https://www.fiberklaar.be/nl/adres-niet-aansluitbaar",
    "secondary_cta_url": "https://www.fiberklaar.be/nl/projecten/liedekerke",
    "address": {
        "id": ,
        "tzip": "",
        "dhid": "",
        "address": "",
        "street": "",
        "house_number": "",
        "box": "",
        "postal_code": "1770",
        "municipality": "Liedekerke",
        "enable": false,
        "orderable": false,
        "area": {
            "name": "Liedekerke",
            "project_page": "https://www.fiberklaar.be/nl/projecten/liedekerke-",
            "municipal_page_url": "https://www.fiberklaar.be/nl/projecten/liedekerke",
            "number": "Liedekerke-",
            "planned_status_link": "https://www.fiberklaar.be/nl/adres-aansluitbaar-planned",
            "campaign_status_link": "https://www.fiberklaar.be/nl/adres-aansluitbaar-campagne",
            "build_status_link": "https://www.fiberklaar.be/nl/adres-aansluitbaar-bouw",
            "done_status_link": "https://www.fiberklaar.be/nl/sluit-je-aan",
            "status": 2
        }
    },
    "is_positive": false,
    "scenario": 5,
    "is_known_in_ac": true,
    "is_enabled": false,
    "is_orderable": false
}
:troosten:
TV: Afbeelding
ISP: Afbeelding
Tel.: Afbeelding