"Pilotage" d'une page web ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

"Pilotage" d'une page web ?

Message par PhM »

Bonjour,

J'aimerai savoir si il est possible de remplir, par programmation, quelques indications pour qu'une page web renvoie les données.

Concrètement, sur cette page dédiée au calcul de plan de vol pour la simulation : http://rfinder.asalink.net/free/, il faut entrer principalement le lieu de départ (ex : LFMT) et l'arrivée (ex : LPPT).

Si cela est réalisable, comment un programme pourrait-il envoyer successivement les 2 informations (LFMT/LPPT) pour obtenir le résultat retourné ?
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: "Pilotage" d'une page web ?

Message par microdevweb »

Bonjour,

Il faut voir si un formulaire est renvoyé ou non, si quand tu valide et soumet la page si tu vois

Code : Tout sélectionner

Exemple avec le site du forum :
https://www.purebasic.fr/french/posting.php?mode=reply&f=1&t=17902
ou quelque chose de similaire, alors tu peut émettre une requête similaire en remplaçant les données qui suivent les =

Mais cela m'étonnerais fortement, ou alors le site est très mal sécurisée.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Re: "Pilotage" d'une page web ?

Message par PhM »

Et donc ? pour l'exemple indiqué http://rfinder.asalink.net/free/ cela n'est pas possible ?

Pour LFMT vers LGIR, j'ai remarqué que l'appui sur FIND ROUTE envoyait à l'adresse :
http://rfinder.asalink.net/free/autoroute_rtx.php

les requêtes suivantes :
id1=LFMT&ic1=&id2=LGIR&ic2=&minalt=FL330&maxalt=FL330&lvl=B&dbid=2001&usesid=Y&usestar=Y&easet=Y&rnav=Y&nats=R&k=813817956

J'ai fait différents assemblages des 2 lignes séparées, par exemple, avec / ou avec ? mais sans succès !
Dernière modification par PhM le lun. 20/janv./2020 14:59, modifié 2 fois.
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: "Pilotage" d'une page web ?

Message par Marc56 »

Il existe de multiples façons de faire.

Recherche sur le net (et dans ce forum et celui us) avec les mots clé WebDriver et Selenium

Tu peux automatiser un navigateur existant ou utiliser un navigateur sans tête (headless browser)
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: "Pilotage" d'une page web ?

Message par Mesa »

C'est possible mais il faudrait que tu nos donnes un début de code.

Tu peux t'inspirer de ça:

Code : Tout sélectionner

EnableExplicit

Procedure.I WriteTextIntoHTMLElement(WebGadgetID.I, ElementName.S, Text.S)
	Protected BSTRText.S = Space(128)
	Protected Document.IHTMLDocument3
	Protected Dispatch.iDispatch
	Protected Element.IHTMLElement
	Protected InputElement.IHTMLInputElement
	Protected Result.I
	Protected Value.I
	Protected WebBrowser.IWebBrowser2 = GetWindowLongPtr_(GadgetID(WebGadgetID), #GWL_USERDATA)

	If WebBrowser\get_Document(@Dispatch) <> #S_OK
		Dispatch\Release() 
		ProcedureReturn #False
	EndIf

	If Dispatch\QueryInterface(?IID_IHTMLDocument3, @Document) <> #S_OK
		Document\Release()
		Dispatch\Release()
		ProcedureReturn #False
	EndIf

	If Document\getElementById(ElementName, @Element) <> #S_OK Or Element = 0
		Document\Release()
		Dispatch\Release()
		ProcedureReturn #False
	EndIf

	If Element\QueryInterface(?IID_IHTMLInputElement, @InputElement) <> #S_OK
		Element\Release()
		Document\Release()
		Dispatch\Release()
		ProcedureReturn #False
	EndIf

	Result = InputElement\put_value(Text)
	
	InputElement\Release()   
	Element\Release()   
	Document\Release()   
	Dispatch\Release()   
		
	If Result = #S_OK
		ProcedureReturn #True
	Else
		ProcedureReturn #False
	EndIf 
EndProcedure

Procedure NavigationCallback(GadgetID.I, URL.S)
	If FindString(URL, "LoginButtonClick")
		MessageRequester("Info", "Login button was clicked!")
	EndIf
EndProcedure

Define HTML.S
Define SelectedFilename.S

HTML + "<html><body><form name='TestForm' action='' method='get'>" + #CR$
HTML + "Your login name: <input name=" + #DQUOTE$ + "Name" + #DQUOTE$
HTML + " type=" + #DQUOTE$ + "text" + #DQUOTE$
HTML + " size=15 maxlength=15>" + #CR$
HTML + "<br>" + #CR$
HTML + "<br>" + #CR$
HTML + "<center>" + #CR$
HTML + "<input type='button' value='Login' onClick='window.location=" + #DQUOTE$ +"LoginButtonClick" + #DQUOTE$ + "'>" + #CR$
HTML + "</center>" + #CR$
HTML + "</form>" + #CR$
HTML + "</body>" + #CR$
HTML + "</html>" + #CR$

OpenWindow(0, 0, 0, 280, 140, "Login form demo", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
WebGadget(0, 5, 5, WindowWidth(0) - 10, WindowHeight(0) - 40, "")
ButtonGadget(1, 20, WindowHeight(0) - 25, 100, 20, "Fill in login name")
ButtonGadget(2, 140, WindowHeight(0) - 25, 120, 20, "Click onto login button")

SetGadgetItemText(0, #PB_Web_HtmlCode, HTML)
SetGadgetAttribute(0, #PB_Web_NavigationCallback, @NavigationCallback())

Repeat
	Select WaitWindowEvent()
		Case #PB_Event_CloseWindow
			End
		Case #PB_Event_Gadget
			Select EventGadget()
				Case  1
					WriteTextIntoHTMLElement(0, "Name", "JohnSmith")
				Case 2
					SetGadgetText(0, "javascript:document.TestForm.LoginButtonClick.submit();")
			EndSelect
	EndSelect
ForEver

End

DataSection
	IID_IHTMLDocument3:
		Data.L $3050F485
		Data.W $98B5, $11CF
		Data.B $BB, $82, $00, $AA, $00, $BD, $CE, $0B

	IID_IHTMLInputElement:
		Data.L $3050F5D2
		Data.W $98B5, $11CF
		Data.B $BB, $82, $00, $AA, $00, $BD, $CE, $0B
EndDataSection
et tiens nous au courant.

M.
doudouvs
Messages : 244
Inscription : jeu. 07/mars/2013 19:02
Localisation : France Alsace / Espagne Girona

Re: "Pilotage" d'une page web ?

Message par doudouvs »

PhM a écrit :Et donc ? pour l'exemple indiqué http://rfinder.asalink.net/free/ cela n'est pas possible ?

Pour LFMT vers LGIR, j'ai remarqué que l'appui sur FIND ROUTE envoyait à l'adresse :
http://rfinder.asalink.net/free/autoroute_rtx.php

les requêtes suivantes :
id1=LFMT&ic1=&id2=LGIR&ic2=&minalt=FL330&maxalt=FL330&lvl=B&dbid=2001&usesid=Y&usestar=Y&easet=Y&rnav=Y&nats=R&k=813817956

J'ai fait différents assemblages des 2 lignes séparées, par exemple, avec / ou avec ? mais sans succès !

En accès directe sur autoroute_rtx.php ca marchera pas il passe par un index.php qui génère le k = "un numéro aléatoire valide un certain temps", il contrôle surement le referer donc de la ou tu viens, si les 2 ne corresponde pas alors nok
GCC 7.4.0 / PureBasic 5.71 / Ubuntu 18.04.3 LTS
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Re: "Pilotage" d'une page web ?

Message par PhM »

Oui, merci. Je me suis également aperçu de ce k mystérieux et surtout bloquant.
Mais, je viens de trouver un autre site qui est moins regardant et, finalement plus rapide pour le même résultat.

Le site de base : Path Finder : https://vau.aero/route/?va=vau

Et, sa simple requête facilement exploitable pour l'exemple LFMT to LGIR :

https://vau.aero/route/getRoute.php?mul ... t1=&omit2=

dep : LFMT
nat :
airac : 2001
dest : LGIR
rt :
lvl : Hight (H/L/B)
transit :
transit1 :
transit2 :
omit :
omit1 :
omit2 :

Le résultat retourné est un peu mélanger mais tout est la avec comme principal séparateur |

OK#Mediterranee (Montpellier)|Nikos Kazantzakis (Heraklion)||#1118+MARRI Y25 SALIN UY341 BULTO UY342 PADKO UL127 ADITA UZ192 STP UL127 SODRI UM728 DOKAR N604 RUTOM UM601 TRL UJ65 SOKRI J65 SUD UJ65 BAVES++43.5833,3.96139,LFMT,Mediterranee (Montpellier),,,0,|43.3847,4.47417,MARRI,MARRI,SID,118,25.321132635459,|43.2828,4.73014,SALIN,SALIN,Y25,118,12.7436,|43.2736,4.90333,BULTO,BULTO,UY341,93,7.59052,|43.2317,5.33306,PADKO,PADKO,UY342,97,18.9593,|43.2286,5.82886,ADITA,ADITA,UL127,89,21.6899,|43.2267,6.02378,TURIL,TURIL,UZ192,90,8.52771,|43.2195,6.60181,STP,SAINT TROPEZ,UZ192,90,25.2926,116.50|43.1658,7.07306,LERMA,LERMA,UL127,97,20.8774,|43.1047,7.59111,OMARD,OMARD,UL127,98,22.9922,|43.08,7.79333,MERLU,MERLU,UL127,98,8.98959,|43.0131,8.37194,SODRI,SODRI,UL127,97,25.7037,|42.8933,8.67694,RAPUR,RAPUR,UM728,117,15.2086,|42.8081,8.89139,OKROK,OKROK,UM728,117,10.7383,|42.7231,9.10444,RATAP,RATAP,UM728,117,10.6879,|42.5736,9.47483,BTA,BASTIA PORETTA,UM728,117,18.6567,114.15|42.5008,9.75,DOKAR,DOKAR,UM728,108,12.9331,|40.0161,15.8075,INGAB,INGAB,N604,115,311.341,|38.5183,19,RUTOM,RUTOM,N604,118,173.499,|38.3211,19.7436,LASKO,LASKO,UM601,104,36.9289,|38.113,20.5047,KFN,KEFALLINIA,UM601,104,38.0137,115.50|37.4038,22.3403,TRL,TRIPOLIS,UM601,112,96.9753,116.20|36.2578,23.4719,SOKRI,SOKRI,UJ65,139,87.6998,|35.523,24.175,SUD,CHANIA,J65,139,55.8145,108.60|35.4247,24.7269,BAVES,BAVES,UJ65,99,27.6273,|35.3397,25.1803,LGIR,Nikos Kazantzakis (Heraklion),,,0,@1133+MARRI Y25 SALIN UY341 BULTO UY342 PADKO UL127 ADITA UZ192 STP UL127 SODRI UM728 DOKAR N604 RUTOM UM601 KFN UM872 PLH R78 TIPUS++43.5833,3.96139,LFMT,Mediterranee (Montpellier),,,0,|43.3847,4.47417,MARRI,MARRI,SID,118,25.321132635459,|43.2828,4.73014,SALIN,SALIN,Y25,118,12.7436,|43.2736,4.90333,BULTO,BULTO,UY341,93,7.59052,|43.2317,5.33306,PADKO,PADKO,UY342,97,18.9593,|43.2286,5.82886,ADITA,ADITA,UL127,89,21.6899,|43.2267,6.02378,TURIL,TURIL,UZ192,90,8.52771,|43.2195,6.60181,STP,SAINT TROPEZ,UZ192,90,25.2926,116.50|43.1658,7.07306,LERMA,LERMA,UL127,97,20.8774,|43.1047,7.59111,OMARD,OMARD,UL127,98,22.9922,|43.08,7.79333,MERLU,MERLU,UL127,98,8.98959,|43.0131,8.37194,SODRI,SODRI,UL127,97,25.7037,|42.8933,8.67694,RAPUR,RAPUR,UM728,117,15.2086,|42.8081,8.89139,OKROK,OKROK,UM728,117,10.7383,|42.7231,9.10444,RATAP,RATAP,UM728,117,10.6879,|42.5736,9.47483,BTA,BASTIA PORETTA,UM728,117,18.6567,114.15|42.5008,9.75,DOKAR,DOKAR,UM728,108,12.9331,|40.0161,15.8075,INGAB,INGAB,N604,115,311.341,|38.5183,19,RUTOM,RUTOM,N604,118,173.499,|38.3211,19.7436,LASKO,LASKO,UM601,104,36.9289,|38.113,20.5047,KFN,KEFALLINIA,UM601,104,38.0137,115.50|35.8317,23.0419,ETILI,ETILI,UM872,134,183.21,|35.2276,23.6808,PLH,PALEOCHORA,UM872,134,47.8506,114.60|35.1736,24.6356,TIPUS,TIPUS,R78,91,46.9506,|35.3397,25.1803,LGIR,Nikos Kazantzakis (Heraklion),,,0,#

C'est bon pour moi maintenant, merci les gars !
Répondre