Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: bonmario - Marzo 19, 2023, 12:58:14 pm

Titolo: [OT] Download pagina Html tramite browser
Inserito da: bonmario - Marzo 19, 2023, 12:58:14 pm
Ciao a tutti,
da anni ho un programma fatto da me che funziona così:
- ho un elenco di url Amazon con, per ogni URL, un prezzo minimo limite
- il programma scarica l'url corrispondente in un file html, il download avviene tramite l'uso dell'oggetto "THTTPSend" di Lazarus
- il file html viene analizzato alla ricerca del prezzo dell'oggetto a cui si riferisce la pagina
- se il prezzo è inferiore al prezzo che ho messo come limite, mi avvisa

Da ieri non funziona più. Da quello che ho capito, Amazon riesce a bloccare la cosa.
In pratica, invece di scaricare la pagina html come ha sempre fatto, ne scarica un'altra contenente un errore generico. Aprendo questa con un editor di testo, c'è questo commento:

Citazione
Per discutere l'accesso automatizzato ai dati di Amazon, contatta api-services-support@amazon.com.
Per informazioni sulla migrazione alle nostre API, fare riferimento alle API di Marketplace all'indirizzo https://developer.amazonservices.com/ref=rm_5_sv o alla nostra Product Advertising API all'indirizzo https://affiliate-program.amazon.com/gp/advertising/api/detail/main.html/ref=rm_5_ac per i casi d'uso pubblicitari.

To discuss automated access to Amazon data please contact api-services-support@amazon.com.
For information about migrating to our APIs refer to our Marketplace APIs at https://developer.amazonservices.it/ref=rm_c_sv, or our Product Advertising API at https://programma-affiliazione.amazon.it/gp/advertising/api/detail/main.html/ref=rm_c_ac for advertising use cases.

Ho provato ad aggirare i problema, facendo scaricare la pagina con "wget", ma il problema rimane

Adesso mi è venuto in mente questo,ed è quello che sto per chiedervi: sapete se c'è qualche browser che si può lanciare da riga comando in modo da fargli scaricare il file html associato ad un URL?

Grazie, Mario
Titolo: Re:[OT] Download pagina Html tramite browser
Inserito da: DragoRosso - Marzo 19, 2023, 06:26:32 pm
Adesso mi è venuto in mente questo,ed è quello che sto per chiedervi: sapete se c'è qualche browser che si può lanciare da riga comando in modo da fargli scaricare il file html associato ad un URL?

No, mi dispiace.

Però il problema che hai è in realtà un qualcosa che ha a che fare con le sessioni (in generale).
Non lo risolveresti come lo hai indicato.

Se vedi il link di una pagina di Amazon vengono proposti molti tag (tra cui "hvrand" ad esempio) che mi danno tanto il senso di una marcatura temporale della pagina o qualcosa di simile.

Quel link sono certo varrà per un tempo ritenuto consono da Amazon, dopo di che il server Amazon non lo validerà più (perchè il riferimento di uno dei tag è "scaduto").

E' di fatto il principio della "sessione", ossia il dato è valido per la sessione ritenuta valida (che generalmente è su base temporale).

Tale "sistema" è usato spessissimo e sempre più frequentemente dai siti per evitare che robots o altro possano "by passare" di fatto l'azione pubblicitaria ad esempio.

Ciò impedirà ad esempio di salvare il link di una pagina di prodotto .... dopo un pò di tempo non si potrà più accedere ....

Ciao

P.S.: da un test effettuato ora un link generato da una ricerca attuale su Amazon può essere usato da diversi browser e da diversi PC senza problemi, ma ciò penso abbia come indicato un limite temporale.
Titolo: Re:[OT] Download pagina Html tramite browser
Inserito da: nomorelogic - Marzo 19, 2023, 06:58:31 pm
sotto linux c'è un browser in modalità testuale che si chiama lynx
ha tra i parametri -dump che serve per scaricare le pagine
vedi qua per farti un'idea
https://linuxconfig.org/retrieving-webpages-using-wget-curl-and-lynx (https://linuxconfig.org/retrieving-webpages-using-wget-curl-and-lynx)


Per quanto riguarda "come fa amazon ad accorgersi dell'accesso automatizzato", secondo me potrebbe aver analizzato le tue richieste ad esempio, negli header, ogni browser mette il suo nome.
Non ricordo in quale caso, ma in passato ho dovuto mandare gli header di firefox per far lavorare il client fatto con lazarus...

buona fortuna con lynx
Titolo: Re:[OT] Download pagina Html tramite browser
Inserito da: bonmario - Marzo 19, 2023, 08:07:30 pm
Ciò impedirà ad esempio di salvare il link di una pagina di prodotto .... dopo un pò di tempo non si potrà più accedere ....

Guarda, ti posso assicurare che ci sono link che uso da anni, e la cosa ha smesso di funzionare sabato.

sotto linux c'è un browser in modalità testuale che si chiama lynx
ha tra i parametri -dump che serve per scaricare le pagine
vedi qua per farti un'idea
https://linuxconfig.org/retrieving-webpages-using-wget-curl-and-lynx (https://linuxconfig.org/retrieving-webpages-using-wget-curl-and-lynx)


Per quanto riguarda "come fa amazon ad accorgersi dell'accesso automatizzato", secondo me potrebbe aver analizzato le tue richieste ad esempio, negli header, ogni browser mette il suo nome.
Non ricordo in quale caso, ma in passato ho dovuto mandare gli header di firefox per far lavorare il client fatto con lazarus...

buona fortuna con lynx

Per quanto riguarda lynx, lo terrò in considerazione, anche se questo mio programma gira saltuariamente anche in Windows: se non trovo altro, userò quello.
Per quanto riguarda la seconda parte della tua risposta, mi hai ricordato che nel componente che uso c'è la possibilità di modificare lo User Agent, devo solo trovare quello di Firefox, che al momento non trovo ...

Grazie, Mario
Titolo: Re:[OT] Download pagina Html tramite browser
Inserito da: DragoRosso - Marzo 19, 2023, 08:33:22 pm
Prova ad usare questo:

Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:111.0) Gecko/20100101 Firefox/111.0

Poi, ho fatto una prova richiedendo la pagina usata per le prove con wget puro sia sotto Linux che sotto Windows e le scarica correttamente.

Ho richieste tramite un componente Indy con User Agent vuoto: la pagina viene scaricata correttamente.

E' possibile come dice @nomorelogic che il problema sia lo User Agent, ma io scarico tutto senza problemi sia con sia senza User Agent (anche con stringhe inventate).

Potrebbe esserci di più, magari una analisi più "profonda" degli "anti scrap" di Amazon  che ha portato nel tuo caso all'esclusione.

Titolo: Re:[OT] Download pagina Html tramite browser
Inserito da: nomorelogic - Marzo 19, 2023, 10:45:48 pm
ho scoperto che lynx c'è anche, non solo per win, ma anche per un gran numero di OS :)
https://lynx.browser.org/ (https://lynx.browser.org/)
Titolo: Re:[OT] Download pagina Html tramite browser
Inserito da: bonmario - Marzo 20, 2023, 08:18:46 am
Prova ad usare questo:

Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:111.0) Gecko/20100101 Firefox/111.0

Poi, ho fatto una prova richiedendo la pagina usata per le prove con wget puro sia sotto Linux che sotto Windows e le scarica correttamente.

Ho richieste tramite un componente Indy con User Agent vuoto: la pagina viene scaricata correttamente.

E' possibile come dice @nomorelogic che il problema sia lo User Agent, ma io scarico tutto senza problemi sia con sia senza User Agent (anche con stringhe inventate).

Potrebbe esserci di più, magari una analisi più "profonda" degli "anti scrap" di Amazon  che ha portato nel tuo caso all'esclusione.

Allora, diciamo che ogni tanto Amazon mi dava dei problemi con questo programma, ma la cosa si risolveva nel giro di mezza giornata, e l'errore non era quello che mi dava in questo weekend.
Il mio dubbio è che il fatto che gli arrivino più richieste nel giro di pochi secondi, fanno scattare l'allarme.

In ogni caso, ieri ho fatto una prova veloce forzando lo User Agent, ed il programma è arrivato fino in fondo senza problemi.
Queste sere farò dei test più approfonditi.

Grazie, Mario