[ASP/XML] Gegevens ophalen van website met login

Pagina: 1
Acties:
  • 205 views sinds 30-01-2008
  • Reageer

  • NiMu83
  • Registratie: Januari 2001
  • Laatst online: 18-08-2025
Voor een sportclub halen we alle uitslagen en standen op van de KNVB website via XMLHTTP.

Echter sinds kort dien je je eerst in te loggen alvorens je de website kunt bekijken met de uitslagen en standen.

Echter lukt het ons nu niet meer deze gegevens op te halen middels de script, omdat er nu een login en wachtwoord is vereist.

Dit werkte iig niet:

xml.Open "GET", strUrl, False, "login", "wachtwoord"

Iemand misschien een idee hoe ik het script weer werkende kan krijgen?

strUrl bevat de directe link naar de pagina waar de standen en uitslagen staan.
code:
1
2
3
4
5
6
7
Response.Buffer = True

Set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.Open "GET", strUrl, False
xml.Send
strResult = xml.responseText
set xml = Nothing

Voetbal is de belangrijkste bijzaak in het leven.


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 17:08

Robtimus

me Robtimus no like you

Wat voor login is dat? Moet je inloggen met POST, met GET, of via de webserver zelf (bv .htaccess) met zo'n popup scherm voor de login?

Als het via POST is kun je het volgende proberen:
code:
1
2
3
4
// nodig om te kunnen posten heb ik ontdekt
xml.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xml.open "POST", strUrl + "?login=login&password=password", False
xml.Send

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 10-02 15:36
Je omzeilt hiermee een beveiliging wat het illegaal maakt tenzij je daar toestemming voor verkregen hebt. Ben je daarvan bewust!

  • NiMu83
  • Registratie: Januari 2001
  • Laatst online: 18-08-2025
Voor het login kun je http://www.knvb.nl/ bezoeken. Aan de linkerkant staat het inlogscherm. Volgens de bron van de pagina is het idd POST.

@djluc. Het is niet illegaal. Je kan gratis een account aanvragen (wat ik dus ook heb gedaan). Ik moet alleen een manier vinden om de inloggegevens mee te sturen tijdens het ophalen van de gegevens middels XMLHTTP

Voetbal is de belangrijkste bijzaak in het leven.


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 10-02 15:36
offtopic:
Bieden ze dan geen RSS feed o.i.d. aan?

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 17:08

Robtimus

me Robtimus no like you

djluc schreef op dinsdag 14 november 2006 @ 20:47:
Je omzeilt hiermee een beveiliging wat het illegaal maakt tenzij je daar toestemming voor verkregen hebt. Ben je daarvan bewust!
Je omzeilt het inderdaad niet, je automatiseert de login en het data ophalen alleen. Want je logt nog steeds in.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • NiMu83
  • Registratie: Januari 2001
  • Laatst online: 18-08-2025
IceManX schreef op dinsdag 14 november 2006 @ 21:33:
[...]
Je omzeilt het inderdaad niet, je automatiseert de login en het data ophalen alleen. Want je logt nog steeds in.
Ik heb nu:
Set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.open "POST", strUrl + "?email=login&password=wachtwoord", False
xml.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xml.Send
strResult = xml.responseText
set xml = Nothing

Waar login en wachtwoord ingevuld zijn met het daadwerkelijke wachtwoord. Maar het wil nog steeds niet werken...Ik heb 'login' trouwens gewijzigd in 'email' omdat dit de namen van de 2 invoervelden zijn op de login pagina van de knvb.
Iemand nog ideeen?

[ Voor 9% gewijzigd door NiMu83 op 14-11-2006 21:53 ]

Voetbal is de belangrijkste bijzaak in het leven.


  • Wolf87
  • Registratie: Juli 2004
  • Laatst online: 10-02 20:40
wat staat er exact in strUrl?

je moet inloggen met het volgende formaat:

http://www.knvb.nl/mijn/?email=test&password=test

  • NiMu83
  • Registratie: Januari 2001
  • Laatst online: 18-08-2025
Wolf87 schreef op dinsdag 14 november 2006 @ 22:33:
wat staat er exact in strUrl?

je moet inloggen met het volgende formaat:

http://www.knvb.nl/mijn/?email=test&password=test
Daar staat bijvoorbeeld deze link:
http://www.knvb.nl/clubs_...B&TeamDescription=1#stand

(Echter kom je daar dus niet omdat je eerst moet inloggen)

Wanneer ik wel ben ingelogd en ik ga naar bovenstaande URL dan verwijsd deze naar:
http://www.knvb.nl/clubs_...p_id=W1-0212**-13-54408*!

[ Voor 13% gewijzigd door NiMu83 op 14-11-2006 22:45 ]

Voetbal is de belangrijkste bijzaak in het leven.


  • Ashtaroth
  • Registratie: December 2003
  • Laatst online: 25-09-2019
als ik de html bekijk, moet je ook method=login meegeven

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

De form volgens de Developer Toolbar:
code:
1
2
3
4
5
6
7
8
9
10
11
Form
Id  Name    Method  Action
mijnknvb    mijnknvb    post    /mijn

Elements
Index   Name     Type Value
0       next     text
1       method   text   login               
2       email    text
3       password text
4       Login    submit Login

Die moet je dus even meegeven aan de POST naar /mijn.

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Verwijderd

Ik doe precies wat jij wilt doen, weliswaar mbv PHP maar de procedure zal voor ASP niet anders zijn.
Zie http://www.rivierwijkers.nl/cms/index.php?KNVB:Zaterdag_2 voor het resultaat. Op de KNVB site zijn deze standen hier te vinden.
Verder gebruik ik een cURL 'client url' library, omdat deze ondersteuning heeft voor het posten van forms en cookies. Die cookies zijn van essentieel belang.

De werkwijze:
-zoek de url van de pagina met standen en het programma van het gewenste elftal; vraag hiervan de printversie op. Die printversie heeft als voordeel dat je er straks makkelijker de relevante html tables uit kan halen.
-laat je script het inlog formulier op deze url posten met de formvelden 'Login' en waarde 'Login', 'email' en waarde 'jouwemailadres', 'password' en waarde 'jouwpassword'.
-als je login geldig is zal er een cookie worden geplaatst, je script moet die ondersteunen. Dit doet cURL voor mij. De cookie wordt op de server opgeslagen. (Ik weet niet of er voor ASP een cURL library bestaat, of dat dergelijke functionaliteit op een andere manier beschikbaar is.)
-haal nu de url met printversie van de stand en het programma op. (Dit werkt alleen als het cookie gezet is)
-het resulaat sla je op en hieruit kun je vervolgens de relevante tables filteren mbv regex of substring oid. Je kunt de tables nu in je eigen vormgeving hangen door corresponderende css classen aan te maken.
-deze data sla je op en kun je vervolgens als cache gebruiken, omdat de gegevens op de knvb site (voor het amateurvoetbal) toch maar een keer per week worden bijgewerkt.

Jammer dat de KNVB hiervoor geen webservice aanbiedt en dat je met de screenscrape methode moet werken. Overigens is deze werkwijze volstrekt legaal, je script emuleert enkel een browser en logt netjes in met een geldig account.

  • NiMu83
  • Registratie: Januari 2001
  • Laatst online: 18-08-2025
CodeCaster schreef op woensdag 15 november 2006 @ 01:02:
De form volgens de Developer Toolbar:
code:
1
2
3
4
5
6
7
8
9
10
11
Form
Id  Name    Method  Action
mijnknvb    mijnknvb    post    /mijn

Elements
Index   Name     Type Value
0       next     text
1       method   text   login               
2       email    text
3       password text
4       Login    submit Login

Die moet je dus even meegeven aan de POST naar /mijn.
Hoe bedoel je dat precies? Hoe kan ik de juiste elementen meegeven dan? Ik heb al vanalles geprobeer om de url te veranderen in bijvoorbeeld:
http://www.knvb.nl/mijn/?...p_id%3DW1-0212**-13-54408
http://www.knvb.nl/mijn?e...p_id%3DW1-0212**-13-54408

etc...Maar hij logt daarmee niet direct in...

Voetbal is de belangrijkste bijzaak in het leven.


Verwijderd

Hij logt niet direct in omdat er nog een variable in je url ontbreekt, namelijk method=login. Voeg die toe en het komt er zo uit te zien (wel ff je eigen email en password erin zetten):
http://www.knvb.nl/mijn/?...p_id%3DW1-0212**-13-54408
In je browser lukt dit nu wel, als je tenminste cookies enabled hebt staan. In een script is dat niet standaard zo.

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

Dat werkt niet, want de form-methode is post.

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • NiMu83
  • Registratie: Januari 2001
  • Laatst online: 18-08-2025
Het lijkt vooralsnog te werken door dit te doen:

code:
1
2
3
4
5
6
7
8
9
strUrl="http://www.knvb.nl/mijn/?email=bla&password=bla&method=login&next=%2Fclubs_comp%2Fteam_standen%3Fclub_id%3DBBCZ024%3Bteam_id%3D108755%3Bcomp_id%3DW1-0212**-13-54408*!"

Response.Buffer = True

Set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.Open "GET", strUrl, False
xml.Send
strResult = xml.responseText
set xml = Nothing


Mijn dank is groot voor iedereen die heeft geholpen!

Voetbal is de belangrijkste bijzaak in het leven.


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

Wanneer het met GET werkt terwijl de form-method POST is vrees ik dat er op de site gebruik gemaakt wordt van register_globals... :X

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • NiMu83
  • Registratie: Januari 2001
  • Laatst online: 18-08-2025
CodeCaster schreef op woensdag 15 november 2006 @ 12:40:
Wanneer het met GET werkt terwijl de form-method POST is vrees ik dat er op de site gebruik gemaakt wordt van register_globals... :X
Wat bedoel je precies met register_globals?

Voetbal is de belangrijkste bijzaak in het leven.


Verwijderd

Verwijderd schreef op woensdag 15 november 2006 @ 10:47:
Ik doe precies wat jij wilt doen, weliswaar mbv PHP maar de procedure zal voor ASP niet anders zijn.
Het gaat inderdaad om het Cookie.

Ik heb het gedaan door het Cookie in mijn browser te bekijken en deze waarde stuur ik mee met het XMLHTTP object.
Pagina: 1