abonnement Unibet Coolblue Bitvavo
pi_77795585
Achtergrond:
Ik ben bezig met een online boekings-systeem voor Indonesische luchtvaartmaatschappijen (het ontbreekt daar nog vrijwel aan helaas). Ik heb hiervoor toegang tot een boekings-engine van een Indonesisch bedrijf, maar daar kan het in voorkomen dat vlucht-tijden niet 100% correct vermeld zijn. Om fouten te voorkomen heb ik daarom besloten voor het boeken een controle uit te voeren op de website van de maatschappij om te kijken of de vlucht wel op dat tijdstip vertrekt.

Probleem:
Voor de meeste maatschappijen kan ik gewoon een HTTP POST doen met PHP die de juiste gegevens tevoorschijn tovert. Tot zo ver gaat alles goed. Echter zijn er een paar websites waarbij dit niet werkt. Althans, ik krijg het niet werkend voor die websites.

Ik maak gebruik van Snoopy om een browser te emuleren en de gegevens op te halen, maar als ik een post doe naar de website van Mandala Air dan krijg ik steevast een 500 internal server foutmelding terug, teken dat er iets niet goed gaat met het posten van de gegevens.

Ik heb het vermoeden dat het fout gaat omdat er gebruik wordt gemaakt van postbacks, waardoor bepaalde gegevens (POST/GET/Cookie) anders doorgegeven worden dan ik denk/kan zien met the addon HttpFox.

Vraag:
Heeft er iemand tips over hoe dit op te lossen op een fatsoenlijke manier? Of is er iemand die 'toevallig' wel de post-data terug kan krijgen van die website door gebruik van een emulator? Ben beperkt tot PHP op mijn webserver en ik ben zelf geen geleerde in PHP, dus mochten termen vreemd over komen, dan weet je waardoor het komt.
  dinsdag 9 februari 2010 @ 04:47:31 #2
65434 Parafernalia
Leuker als je denkt
pi_77795700
gEBRUIK JE HTTPS?
Eindelijk iemand die denkt wat iedereen zegt
  dinsdag 9 februari 2010 @ 04:56:49 #3
289472 Telebankieren
Rabo Random Reader
pi_77795731
staat SSL aan?
Your voice, my voice, violets are blue.
pi_77795869
https is niet nodig voor het fetchen van de website, het gaat gewoon via http, het is namelijk geen passagiersdata, maar slechts het ophalen van een vluchtnummer met bijbehorende vluchttijden.
pi_77796129
Nu ken ik geen PHP, maar dit is toch taalonafhankelijk.

HTTP 500 geeft aan dat er een methode niet goed aangeroepen wordt (of niet bestaat, als men bv alleen GET ondersteund). Als je in de source van die site gaat kijken zie je:

1
2
3
4
<form name="SkySales" id="SkySalesPanel" method="post" action="http://book.mandalaair.com/search.aspx?culture=id-ID" style="margin-bottom: 0; margin-top=0;">
        <input type="hidden" name="__EVENTTARGET" id="Hidden1" value="AvailabilitySearchInputSearchView$LinkButtonNewSearch">
        <input type="hidden" name="__EVENTARGUMENT" id="Hidden2" value="">
        <input type="hidden" name="__VIEWSTATE" id="Hidden3" value="">


Iets zegt me dat je wat velden moet vullen die hidden zijn op het scherm. Die zal hun interne functie weer oppakken om daar verder mee te gaan :)
Op dinsdag 21 februari 2012 22:30 schreef JoanFranka het volgende:
PINGUINS RULEREN!! Dat zijn echt een van de grappigste dieren op aarde hahahaa
pi_77796425
Ja, dat lijkt me ook logisch. Dus ik vul vanalles in wat mogelijk is, inclusief de meest lange strings aan data, maar ik blijf een 500 krijgen of de homepage. Dus ergens gaat er nog iets fout. Heb er vorige week al een dag op gezeten, en dacht dat het vandaag wel zou lukken met een fris gezicht, maar helaas.
  dinsdag 9 februari 2010 @ 08:16:25 #7
75592 GlowMouse
l'état, c'est moi
pi_77796487
__VIEWSTATE e.d. moet je overnemen zoals je script ze ziet, dat kan verschillen zoals je het in Firefox ziet langskomen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_77796718
quote:
Op dinsdag 9 februari 2010 08:16 schreef GlowMouse het volgende:
__VIEWSTATE e.d. moet je overnemen zoals je script ze ziet, dat kan verschillen zoals je het in Firefox ziet langskomen.
Als ik de __VIEWSTATE gebruik die via HttpFox naar voren komt, dan zou het toch moeten werken? Dat er in de broncode van de pagina een andere (nog lege) waarde staat kan ik geloven, zeker omdat de pagina met postbacks werkt.
pi_77798663
Ik heb het nu zo ver dat als ik een sessie geopend heb via de browser, ik de correcte gegevens kan ophalen. Echter lukt het nog niet om via PHP de juiste variabelen door te geven, hij haalt alleen de laatst gedane geposte gegevens via de browser op. Zal wel een sessie-probleempje zijn ergens.
pi_77859641
Logisch dat je formulieren met dat __VIEWSTATE input niet kunt automatiseren met een (externe) post request. Die __VIEWSTATE wordt gegenereerd door ASP.NET Web Forms, en da's een middel om bijvoorbeeld XSS tegen te gaan en je Web Form te beveiligen. Je zult dan inderdaad een 'gebruikerssessie' moeten nabootsen, in plaats van rechtstreeks een POST request te verzenden. Of het doel Web Form moet Event Validation uit hebben staan, maar daar kun je niet echt van uit gaat.
pi_77870196
Okay, maar dan ken jij Snoopy niet, daarmee kun je een browser simuleren, en dus ook cookies en dergelijke reproduceren. Dat zou dan toch moeten helpen niet? Op een andere site met __VIEWSTATE lukte het namelijk wel, fluitje van een cent zelfs.
pi_77872888
Ik zou het anders aanpakken en eisen dat je opdrachtgever verantwoordelijk is voor aanlevering van correcte data. Zodra een van de sites die gebruikt wordt gewijzigd loop je kans dat jouw site ook vast gaat lopen.
Bovendien word jij nu verantwoordelijk voor de juistheid van de gegevens en lijkt me niet leuk om een claim te krijgen omdat de bookingsgegevens niet klopte.
So we just called him Fred too
pi_77907676
Cothen; verantwoordelijkheid is een ander issue wat niet speelt. De boekingen worden namelijk direct uitgevoerd bij de maatschappijen, dus dat kan alleen met goede vluchtgegevens, maar ik heb liever dat ik op mijn website gewoon een compleet overzicht kan aanbieden van correcte vluchten (om over prijzen nog maar niet te praten).

Bedrijven hier hebben weinig op met partijen die het goed willen doen. Zij zijn namelijk groot en jij bent klein, dus kun je het gewoon vergeten. Je moet het wil helaas opnieuw uitvinden als je iets innovatiefs wil doen hier. Er wordt op geen enkele manier stimulans gegeven aan dit soort ontwikkelingen in Indonesie. Maar ik ga stug door, wie weet kom ik nog eens ergens.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')