* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Giugno 10, 2023, 08:20:11 pm

Inserisci il nome utente, la password e la durata della sessione.

11 Visitatori, 1 Utente

Autore Topic: [OT] Download pagina Html tramite browser  (Letto 281 volte)

bonmario

  • Hero Member
  • *****
  • Post: 1222
  • Karma: +10/-1
[OT] Download pagina Html tramite browser
« il: 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

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1003
  • Karma: +38/-0
  • Prima ascoltare, poi decidere
Re:[OT] Download pagina Html tramite browser
« Risposta #1 il: 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.
« Ultima modifica: Marzo 19, 2023, 06:33:08 pm da DragoRosso »
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2733
  • Karma: +17/-4
Re:[OT] Download pagina Html tramite browser
« Risposta #2 il: 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


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
Imagination is more important than knowledge (A.Einstein)

bonmario

  • Hero Member
  • *****
  • Post: 1222
  • Karma: +10/-1
Re:[OT] Download pagina Html tramite browser
« Risposta #3 il: 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


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

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1003
  • Karma: +38/-0
  • Prima ascoltare, poi decidere
Re:[OT] Download pagina Html tramite browser
« Risposta #4 il: 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.

:) Ogni alba è un regalo, ogni tramonto è una conquista :)

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2733
  • Karma: +17/-4
Re:[OT] Download pagina Html tramite browser
« Risposta #5 il: 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/
Imagination is more important than knowledge (A.Einstein)

bonmario

  • Hero Member
  • *****
  • Post: 1222
  • Karma: +10/-1
Re:[OT] Download pagina Html tramite browser
« Risposta #6 il: 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

 

Recenti

How To

Utenti
Stats
  • Post in totale: 17798
  • Topic in totale: 2116
  • Online Today: 34
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 1
Guests: 11
Total: 12

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.