indahnesia.com | dinsdag 9 februari 2010 @ 03:45 | |
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. ![]() | ||
Parafernalia | dinsdag 9 februari 2010 @ 04:47 | |
gEBRUIK JE HTTPS? | ||
Telebankieren | dinsdag 9 februari 2010 @ 04:56 | |
staat SSL aan? | ||
indahnesia.com | dinsdag 9 februari 2010 @ 05:49 | |
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. | ||
Pheno | dinsdag 9 februari 2010 @ 07:20 | |
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:
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 :) | ||
indahnesia.com | dinsdag 9 februari 2010 @ 08:08 | |
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. ![]() | ||
GlowMouse | dinsdag 9 februari 2010 @ 08:16 | |
__VIEWSTATE e.d. moet je overnemen zoals je script ze ziet, dat kan verschillen zoals je het in Firefox ziet langskomen. | ||
indahnesia.com | dinsdag 9 februari 2010 @ 08:37 | |
quote: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. | ||
indahnesia.com | dinsdag 9 februari 2010 @ 10:06 | |
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. ![]() | ||
calamares | woensdag 10 februari 2010 @ 20:53 | |
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. | ||
indahnesia.com | donderdag 11 februari 2010 @ 00:28 | |
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. | ||
Fred2 | donderdag 11 februari 2010 @ 08:53 | |
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. | ||
indahnesia.com | vrijdag 12 februari 2010 @ 01:26 | |
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. ![]() |