Page 1 sur 1

"Pilotage" d'une page web ?

Publié : lun. 20/janv./2020 13:14
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é ?

Re: "Pilotage" d'une page web ?

Publié : lun. 20/janv./2020 14:07
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.

Re: "Pilotage" d'une page web ?

Publié : lun. 20/janv./2020 14:19
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 !

Re: "Pilotage" d'une page web ?

Publié : lun. 20/janv./2020 14:31
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)

Re: "Pilotage" d'une page web ?

Publié : lun. 20/janv./2020 14:38
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.

Re: "Pilotage" d'une page web ?

Publié : lun. 20/janv./2020 15:05
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

Re: "Pilotage" d'une page web ?

Publié : lun. 20/janv./2020 16:00
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 !