Domanda:
Come creare un'API per un'applicazione web senza il suo codice sorgente?
Mr Programmer
2013-04-04 16:54:09 UTC
view on stackexchange narkive permalink

C'è un post qui ( http://narenonit.blogspot.in/2011/07/my-youmint-api-to-send-free-sms.html) in cui l'autore ha ho cercato di informare abbastanza bene, per quanto posso immaginare. Il problema esatto che sto affrontando è come studiare la connessione HTTP. Sarebbe possibile per qualcuno spiegare la procedura un po 'più chiaramente.

Quattro risposte:
#1
+10
0xea
2013-04-04 17:00:36 UTC
view on stackexchange narkive permalink

È possibile utilizzare alcuni strumenti per visualizzare ciò che viene inviato dal browser all'app Web e dedurre come "emulare" questo comportamento. Uno sniffer di rete sarebbe il più utile qui. Wireshark (soprattutto la funzione Segui stream), ad esempio. Inoltre, alcuni plug-in del browser possono essere utili, ad esempio Firebug, TamperData e Poster.

A parte questo, è solo la questione di replicare ciò che fa il browser. Fondamentalmente, la comunicazione http consiste in richieste e risposte GET o POST (ci sono altre richieste e dovresti esaminare RFC2616 per maggiori dettagli). Quindi, guardando i flussi HTTP in Wireshark, è possibile dedurre quale tipo di richiesta viene inviata all'applicazione Web e che tipo di risposta ottiene. Alcune (o la maggior parte, anche) di queste informazioni possono essere dedotte studiando l'origine html della pagina web poiché l'elemento html del modulo avrà i parametri e l'URL dell'azione specificati.

Posso anche consigliare [Fiddler] (http://www.fiddler2.com/fiddler2/) e [http analyzer] (http://www.ieinspector.com/httpanalyzer/) (commerciale)
[mitmproxy] (http://mitmproxy.org/) è abbastanza buono ed è davvero facile modificare / riprodurre i pacchetti.
#2
+6
0xC0000022L
2013-04-04 22:27:47 UTC
view on stackexchange narkive permalink

Oltre agli strumenti citati, vorrei sottolineare ”pry , che si basa su libpcap (come tcpdump e WireShark ) ma mirato solo ad ascoltare ed elencare il traffico HTTP.

Fiddler è un altro strumento, sebbene non FLOSS, che è pronto per il lavoro proprio come il componente aggiuntivo "Tamper Data" di Firefox. Anche Remko lo ha menzionato nel suo commento, ma penso che debba essere menzionato in modo più evidente che in un commento. Mancava dall'altra risposta durante la lettura.

#3
+3
sw.
2013-04-06 17:52:34 UTC
view on stackexchange narkive permalink

Il modo per farlo è utilizzare tecniche di web scraping. Usare sniffer e proxy è eccessivo se puoi accedere alla pagina web / risorsa con un browser. In questo caso, devi solo automatizzare ciò che l'utente fa all'interno del browser e utilizzare strumenti come Strumenti per sviluppatori di Chrome per ispezionare le connessioni HTML e AJAX.

Ho scritto diversi articoli su questo argomento se vuoi dare un'occhiata:

Per le applicazioni che hanno alcune tecniche anti-scraping puoi dare un'occhiata a Eseguire i tuoi proxy a rotazione anonimi

Se c'è alcuni requisiti specifici che non sono coperti non esitare a lasciare un commento e ti aiuterò in questo.

#4
+2
atorrrr
2013-04-05 04:39:23 UTC
view on stackexchange narkive permalink

Fiddler impara ad amarlo ..

Fornisce un'interfaccia facile da usare per acquisire richieste / risposte ai siti previsti.

Essenzialmente devi:

  • Effettuare la richiesta che desideri automatizzare utilizzando il tuo browser.

  • Usa Fiddler per acquisire queste richieste e analizzarle. (È un POST o GET? Esiste un token CSRF? Quali variabili mappano l'input che ho fornito, ecc.)

  • Ricevi la risposta dal server.

  • Identifica le parti che contengono il tuo output.

Quindi devi scrivere uno script che prenda qualsiasi input tu voglia in modo problematico invia e quindi effettua la richiesta nello stesso modo in cui ha fatto il browser. Conserva l'output ed estrai le porzioni che desideri.

Una volta che hai capito come formulare le richieste, puoi creare una classe per nascondere i dettagli di come funziona tutto e creare un codice dall'aspetto pulito.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...