Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2020
    Messaggi
    9

    interagire con una pagina web remota..si puo?

    salve a tutti, spero abbiate trascorso un buon Natale!

    E' possibile interagire con una pagina web, non da me gestita, tramite degli script?

    La pagina in questione e' dedicata ai manutentori di impianti termici e raccoglie i dati degli interventi da noi effettuati tramite la compilazione di form.

    Per poter procedere all'inserimento dei dati e' necessario eseguire un login, io naturalmente sono inscritto e ho le chiavi di accesso.

    Quello che vorrei fare e automatizzare queste procedure, cioe' compilare e inviare i form tramite degli script, non essendoci delle API native e' possibile farlo?


    grazie in anticipo.
    Ultima modifica di toreg; 26-12-2021 a 21:15

  2. #2
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,347
    e i dati da inserire dove si troverebbero?

    forse con un plugin studiato appositamente puoi popolare i campi.
    ma dovresti prima aggiornare il plugin ad agni nuovo inserimento, e poi avviare il browser.
    quindi aver creato in locale un script che ti aggiorni il contenuto del plugin prima del caricamento dello stesso.

    parecchio laborioso...

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2020
    Messaggi
    9
    grazie per l'interessamento..

    i dati potrei prenderli da un database mysql da me realizzato o da un foglio excel..

    Quindi degli script in js o php non possono farlo?!

  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,347
    no, salvo tentare una sorta di sql injection...

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2020
    Messaggi
    9
    Uhm..ho dato un occhiata mi sembra troppo una forzatura.

    Ho analizzato il funzionamento del sito, il login avviene tramite una richiesta post, inviando oltre al nome utente e password un token che viene comunicato dalla pagina stessa tramite un <input> nascosto.
    Ho provato a generare questa richiesta in curl tramite php ma vengo rindirizzato alla pagina di login ma non errori!

    Dalla console di firefox vedo che compilando i campidi user e password invia semplicemente una richiesta post, perch� non funziona se il post lo invio tramite uno script!?

    Faccio difficolt� a capire

  6. #6
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,347
    Quote Originariamente inviata da toreg Visualizza il messaggio
    perché non funziona se il post lo invio tramite uno script!?
    perché è stato generato un token specifico per quella connessione, che si spera sia inviolabile

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,220
    salve a tutti, spero abbiate trascorso un buon Natale!
    Ciao, direi piuttosto tranquillo

    E' possibile interagire con una pagina web, non da me gestita, tramite degli script?
    Come accennato da Vincent.Zeno, chiaramente si parla di restrizioni di sicurezza che possono rendere la questione abbastanza complessa e difficile da gestire.

    In generale, la comunicazione tra client e server potrebbe essere negata se le richieste avvengono tra domini/origini diverse; si parla di concetti come "Same Origin Policy" e altri fattori di sicurezza che regolano questo tipo di meccanismi.

    Presumo che il tuo tentativo usando curl fallisca proprio perché stai cercando di comunicare tra domini diversi, oltre la questione del token.

    Una possibile soluzione può comunque essere quella di iniettare JavaScript direttamente sulla pagina in questione. Più o meno quanto indicato da Vincent.Zeno per il discorso plugin. In tal modo la pagina continua comunque a comunicare regolarmente col server pur essendo "manipolata" da uno script "ospite".

    In Chrome c'è la possibilità di applicare delle estensioni non pacchettizzate, per creare appunto dei plugin personali, ma su Firefox mi pare non ci sia nativamente questa funzionalità. Esistono però dei plugin che permettono di iniettare del codice in pagine specifiche, vedi "Code Injector" e simili.

    Non ho capito se ti serve effettuare automaticamente sia l'accesso sia la compilazione del/i form degli interventi.

    Ad ogni modo, molto a grandi linee, si potrebbe pensare di realizzare un apposito script che, iniettato nella pagina, popoli il form di accesso ed esegua il submit (se ti serve), quindi recuperi dinamicamente in qualche modo (vedi AJAX) i dati da te resi disponibili, ne popoli i relativi campi ed esegua il submit.

    In sostanza lo script si potrebbe suddividere in queste macro funzioni:
    - Accesso
    - Recupero dinamico dei dati da usare per la compilazione del/i form intervento
    - Parsing dei dati per stabilire dove vanno inseriti
    - Parsing della pagina per rilevare i campi interessati
    - Popolamento dei campi
    - Submit del form
    - Gestione della risposta del server e di eventuali errori
    - Eventuale iterazione sulla serie di form intervento

    Chiaro che la cosa andrebbe studiata a dovere prima di capire se e come procedere.

    non essendoci delle API native
    Prima di tutto sarebbe opportuno escludere eventuali altre soluzioni possibili. Sei sicuro che tale pagina/sito/piattaforma/servizio non metta a disposizione eventuali API o strumenti utili ad ottenere ciò che chiedi?

    Se ti è possibile, puoi indicare di che sito si tratta? Giusto per capire meglio.

    raccoglie i dati degli interventi da noi effettuati tramite la compilazione di form
    Se deve essere un sistema che vai ad usare tu stesso, può starci la realizzazione di un "plugin personale". E' chiaro che la cosa può risultare poco pratica se devi "distribuirlo" per permettere ad altri utenti di usarlo.

    Quello che vorrei fare e automatizzare queste procedure
    Se il form prevede sistemi tipo captcha, per determinare se l'utente sia un umano, allora non sarà chiaramente possibile automatizzare il tutto tramite uno script.

    Valuta queste cose prima di poter proseguire.

    Considera inoltre che lo sviluppo di un sistema del genere ha una certa complessità e potrebbe non essere così semplice da realizzare; a parte la relativa complessità dello script, potrebbero anche venir fuori eventuali altre problematiche non previste.

    Se hai tempo, voglia e possibilità di studiare la cosa, allora ti si può dare dei consigli su come procedere.
    Prima di postare considera che tra i link utili puoi trovare il 75% delle risposte alle tue domande; il 20% tra i post del forum; il 15% sul web. Ti resta... humm spè
    Le cattive domande sono quelle che non meritano risposta, le buone domande sono quelle che non hanno risposta
    L'Itailano non e nu'opnioine. E' improntate uslaro correattemtne sul froum. Garize!

    "Mi son documentato"

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2020
    Messaggi
    9
    grazie per il tempo dedicato..
    Il sito in questione è http://sicit.servizirete.it/login gestito dalla prov dell'Aquila, l'approccio che vorrei intraprendere deve essere diciamo così "legale".

    Presumo che il tuo tentativo usando curl fallisca proprio perché stai cercando di comunicare tra domini diversi, oltre la questione del token.
    Il token si trova nel form in un input nascosto è cambia solo dopo una connessione e successiva disconnessione, se lo script invia un token errato ho come risposta "token non valido" o qulcosa del genere. Se invio credenziali e token corretto, semplicemente mi ripropone il login..senza errori.

    Dalla console di firefox ho salvato in curl il post inviato di una connessione "classica" e valida.
    codice:
    curl "http://sicit.servizirete.it/login_check"
        -X POST 
        -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0" 
        -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8" 
        -H "Accept-Language: it,it-IT;q=0.8,en-US;q=0.5,en;q=0.3" 
        -H "Accept-Encoding: gzip, deflate" 
        -H "Referer: http://sicit.servizirete.it/login" 
        -H "Content-Type: application/x-www-form-urlencoded" 
        -H "Origin: http://sicit.servizirete.it" 
        -H "Connection: keep-alive" 
        -H "Cookie: PHPSESSID=276c7c935908497d5085796f13dd6cf1" 
        -H "Upgrade-Insecure-Requests: 1" 
        -H "Pragma: no-cache" 
        -H "Cache-Control: no-cache" 
        --data-raw "_csrf_token=fR7yJVlDfReQSbpAwisxUsFZyjS7IyaTqaq6MmblK8I&_username=xxx&_password=xxx"
    Una possibile soluzione può comunque essere quella di iniettare JavaScript direttamente sulla pagina in questione. Più o meno quanto indicato da Vincent.Zeno per il discorso plugin. In tal modo la pagina continua comunque a comunicare regolarmente col server pur essendo "manipolata" da uno script "ospite".
    Non conoscevo queste possibilità ma pensavo a qualcosa di simile caricando la pagina di login in un frame e poi compilare il form con js, può funzionare??

    Non ho capito se ti serve effettuare automaticamente sia l'accesso sia la compilazione del/i form degli interventi.
    prevalenemente l'inserimento dei dati, potrei anche effettuare l'accesso "normalmente"

    Ad ogni modo, molto a grandi linee, si potrebbe pensare di realizzare un apposito script che, iniettato nella pagina, popoli il form di accesso ed esegua il submit (se ti serve), quindi recuperi dinamicamente in qualche modo (vedi AJAX) i dati da te resi disponibili, ne popoli i relativi campi ed esegua il submit.
    Il modo di iniettare degli script è solo tramite barra indirizzi?

    Chiaro che la cosa andrebbe studiata a dovere prima di capire se e come procedere.


    Prima di tutto sarebbe opportuno escludere eventuali altre soluzioni possibili. Sei sicuro che tale pagina/sito/piattaforma/servizio non metta a disposizione eventuali API o strumenti utili ad ottenere ciò che chiedi?

    Se ti è possibile, puoi indicare di che sito si tratta? Giusto per capire meglio.


    Se deve essere un sistema che vai ad usare tu stesso, può starci la realizzazione di un "plugin personale". E' chiaro che la cosa può risultare poco pratica se devi "distribuirlo" per permettere ad altri utenti di usarlo.

    Se il form prevede sistemi tipo captcha, per determinare se l'utente sia un umano, allora non sarà chiaramente possibile automatizzare il tutto tramite uno script.
    No non utilizza questo sistema..

    Se hai tempo, voglia e possibilità di studiare la cosa, allora ti si può dare dei consigli su come procedere.
    Ho capito che non è così semplice come pensavo, forse faccio prima a compilare i form Però lo faccio anche per passione e mi piacerebbe approfondire.

  9. #9
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,220
    Dalla console di firefox ho salvato in curl il post inviato di una connessione "classica" e valida.
    Riguardo cURL personalmente non so dirti se è necessario, e come, impostarlo per "bypassare" certe eventuali restrizioni di sicurezza. Forse qualcuno più esperto saprà consigliarti meglio.

    Non conoscevo queste possibilità ma pensavo a qualcosa di simile caricando la pagina di login in un frame e poi compilare il form con js, può funzionare??
    Se usi un regolare browser con una regolare configurazione delle impostazioni, "NO", non puoi farlo per via delle restrizioni di sicurezza, come già accennato.

    Gli attuali browser non permettono di agire dentro i frame ne con script ne con altro, a meno che il documento caricato dentro il frame non abbia la stessa origine di quello principale, oppure, a meno che non ci siano delle autorizzazioni specifiche da parte del server che sta ospitando la sua pagina nel tuo frame.

    Il modo di iniettare degli script è solo tramite barra indirizzi?
    No, anche un plugin installato sul browser o una estensione non pacchettizzata, possono applicare del codice (JavaScript, HTML, CSS, ecc.), ad esempio, al caricamento di una specifica pagina. Il codice chiaramente sarà memorizzato in un file esterno o nel plugin stesso e sarà eseguito in base alle impostazioni che gli avrai dato.

    Va da sé che tale codice non è "affetto" dalle normali restrizioni di sicurezza dal momento che sta girando direttamente su tale pagina (come se fosse parte di essa); per tale motivo un sistema del genere potrebbe funzionare senza che sia bloccato da restrizioni di sicurezza.

    Potrebbero esserci anche altri sistemi, un banale esempio è quello di eseguire del JavaScript attraverso la console web del tuo browser; tale script girerebbe come se fosse sulla pagina stessa, ma in alcuni casi sono richieste ugualmente delle autorizzazioni da applicare e/o configurare nel browser per poter permettere di eseguire script in quel modo.

    Se vuoi fare qualche prova, potresti installarti un qualche add-on per Firefox (ad esempio JS Injector) oppure, se usi Chrome, puoi vedere qualche guida su come realizzare una estensione non pacchettizzata.

    Per ora è tutto, fai sapere, proseguendo su questa discussione, se dovesse servirti aiuto per capire come impostare il sistema.

    Buone Feste.
    Prima di postare considera che tra i link utili puoi trovare il 75% delle risposte alle tue domande; il 20% tra i post del forum; il 15% sul web. Ti resta... humm spè
    Le cattive domande sono quelle che non meritano risposta, le buone domande sono quelle che non hanno risposta
    L'Itailano non e nu'opnioine. E' improntate uslaro correattemtne sul froum. Garize!

    "Mi son documentato"

  10. #10
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,395
    Difficilmente passa una richiesta cross-domain per il login, per cui difficilmente potrai usare una pagina web esterna al dominio tramite browser, forse come diceva vincent con un plugin del browser può funzionare. Probabilmente funzionerà tramite software (non browser) o se fatto dal server (server->server). In poche parole non dovresti poterlo fare tramite js con chiamate ajax, a meno che la pagina non faccia parte del dominio.

    Per il login non vale il discorso di autorizzare le chiamate cross-domain, anche se autorizzate il browser se ne infischia e non lo consente...

    Sostanzialmente se così non fosse una mia pagina su un mio dominio (quindi manipolabile da me) potrebbe sfruttare tramite chiamate ajax una eventuale autenticazione fatta dall'utente prima che entrasse nel mio dominio, la chiamata ajax sarebbe autenticata e il tuo js potrebbe fare tutte le operazioni sul dominio dove l'utente era autenticato.
    Extra-browser questo non può succedere, quanto meno non casualmente come potrebbe avvenire nel browser (in pratica ti potresti autenticare ovunque durante la navigazione con il browser e qualsiasi sito potrebbe usare le tue autenticazioni tramite ajax e js sulle sue pagine).
    In pratica si tratta di una limitazione (o meglio: protezione nei confronti dell'utente) del browser, extra-browser questo non avviene.

    Ma se vuoi fare le cose "legali" perché non li contatti direttamente? così su due piedi non mi sembrano molto propensi nel permettere a qualcuno che faccia quello che vuoi fare tu... al contrario l'uso di un token mi suggerisce che abbiano altre vie per usare quest'ultimo.
    Ultima modifica di U235; 27-12-2021 a 21:00

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2022 vBulletin Solutions, Inc. All rights reserved.