Domanda Replicare richieste del browser

s0ac

Utente Bronze
18 Maggio 2021
30
9
4
21
Buonasera a tutti ragazzi,
mi sono trovato davanti a una situazione in cui dovevo effettuare diverse ricerche simili sul web ( roba di sondaggi eccetera... ) e mi chiedevo come potessi automatizzare il tutto . Ad esempio se dovessi automatizzare delle ricerche su bing fatte tramite google chrome come potrei fare ? Ho provato a scrivere un programmino in java che richiede con i socket mandando delle richieste get ma non funziona come vorrei, magari c' è qualche tool di automazione che potrebbe funzionare meglio . Aspetto i vostri consigli.
 
Allora il programma che ho fatto funziona bene e fa le richieste get, in particolare simulo una semplice query di ricerca su bing , il problema è che a me risulti come effettuata da uno specifico browser e siccome devo effettuare questa operazione più volte al giorno mi piacerebbe ottimizzarla; avevo pensato che magari si potessero modificare gli header ma non credo basti questo a farla risultare come proveniente da uno specifico browser e quindi credo sia necessario un tool di automazione che non conosco. Anche perché il tutto avviene sotto un account, volendo credo sarebbe utile ottenere una copia della richiesta https che viene generata ma quando effettuo questa operazione a mano ma non so come fare a intercettarla.
 
Allora il programma che ho fatto funziona bene e fa le richieste get, in particolare simulo una semplice query di ricerca su bing , il problema è che a me risulti come effettuata da uno specifico browser e siccome devo effettuare questa operazione più volte al giorno mi piacerebbe ottimizzarla; avevo pensato che magari si potessero modificare gli header ma non credo basti questo a farla risultare come proveniente da uno specifico browser e quindi credo sia necessario un tool di automazione che non conosco. Anche perché il tutto avviene sotto un account, volendo credo sarebbe utile ottenere una copia della richiesta https che viene generata ma quando effettuo questa operazione a mano ma non so come fare a intercettarla.
Se puoi presentarci degli snippet di codice (ovviamente rimuovendo dati sensibili), sarei felice di aiutarti sul pratico.
 
Questo è il programma che avevo scritto, credo che vada a buon fine il tutto però non funziona sul servizio che mi serve e credo sia perché quando faccio tutto a mano dal browser ( una semplice ricerca su bing ) risulta il mio account con il quale sono loggato e quindi devo mettere il tutto negli header in qualche maniera , ma credo che il passo principale sia prendere la richiesta che il browser invia e ricopiarla in qualche modo nel progetto , magari modificando gli header, solo che non so come fare.
 

Allegati

  • Immagine 2022-03-12 160604.png
    Immagine 2022-03-12 160604.png
    71.5 KB · Visualizzazioni: 4
Questo è il programma che avevo scritto, credo che vada a buon fine il tutto però non funziona sul servizio che mi serve e credo sia perché quando faccio tutto a mano dal browser ( una semplice ricerca su bing ) risulta il mio account con il quale sono loggato e quindi devo mettere il tutto negli header in qualche maniera , ma credo che il passo principale sia prendere la richiesta che il browser invia e ricopiarla in qualche modo nel progetto , magari modificando gli header, solo che non so come fare.

Se vuoi automatizzarlo solamente per un singolo url, sconsiglio di usare il multi-thread perché finiresti nel fare richieste (anche in maniera scalare) che possono attivare anti-dos del sito in cui navighi. Se invece vuoi effettuare più di una query su più piattaforme, potresti benissimo utilizzano più thread in modo da poter parallelizzare le task assegnando ad ogni url un thread (cosi puoi fare query simultaneamente su più url).

Inoltre, che sia 1 tipo o più tipi di query, se vuoi automatizzarle, potresti mettere un clock in un while infinito e tramite funzioni come sleep poter determinare intervalli tra il submit di una query con un altra (per farlo utilizza anche qui i thread in modo da poterli mandare nello stato di sleep ("attendere 5 minuti prima di ricompiere un operazione").

Non so se mi sono spiegato dato che sono appena tornato da lavoro e ho la testa che mi scoppia... fammi sapere se è chiaro!
 
  • Mi piace
Reazioni: s0ac
Allora sul fatto di come parallelizzare sei stato molto chiaro e ti ringrazio credo che mettere tutto in un while sarà quel che farò , il problema è che nonostante riesca ad effettuare questa richiesta non è quella che mi serve, mi spiego meglio : il programma fa quello che deve fare ovvero una ricerca tramite bing, ma per il mio scopo ho bisogno di effettuare una ricerca su bing loggandomi al mio account microsoft ( credo che si possa fare modificando gli header della richiesta ) ma non so come fare e quindi mi chiedevo se fosse possibile intercettare in qualche modo la richiesta facendola dal browser e poi replicarla sul programma una volta che so com'è fatta la richiesta
 
Allora sul fatto di come parallelizzare sei stato molto chiaro e ti ringrazio credo che mettere tutto in un while sarà quel che farò , il problema è che nonostante riesca ad effettuare questa richiesta non è quella che mi serve, mi spiego meglio : il programma fa quello che deve fare ovvero una ricerca tramite bing, ma per il mio scopo ho bisogno di effettuare una ricerca su bing loggandomi al mio account microsoft ( credo che si possa fare modificando gli header della richiesta ) ma non so come fare e quindi mi chiedevo se fosse possibile intercettare in qualche modo la richiesta facendola dal browser e poi replicarla sul programma una volta che so com'è fatta la richiesta
Uhm ok, in questo caso ti consiglio di utilizzare le API di Bing Search, completamente open-source e che possono farti effettuare in maniera programmatica (rendendo il tutto più fruibile).

Ti rimando al link tutorial in Java: https://docs.microsoft.com/en-us/azure/cognitive-services/bing-web-search/quickstarts/java (Devi crearti un account su Azure per la subscription key da utilizzare)