Domanda:
Impedisci che il mio sito venga copiato
h4ck3r
2013-07-05 14:51:16 UTC
view on stackexchange narkive permalink

È possibile proteggere il mio sito da HTTrack Website Copier o qualsiasi programma simile?
Senza impostare un numero massimo di richieste HTTP da parte degli utenti.

Soluzione semplice: basta chiudere il sito web.
Il firewall per applicazioni Web di imperva afferma di essere in grado di rilevare e bloccare tale attività in diversi modi.
HT Track rispetta le esclusioni nel file robots.txt, ma "qualsiasi programma simile" potrebbe non farlo.
Ma aspetta, non stai afferrando i siti web di altre persone? http://stackoverflow.com/questions/17440236/getting-java-to-save-a-html-file
@ROFLwTIME no, ero solo io a giocare con java, ma quel programma è ciò che ha innescato questa domanda. Ho scritto quel programma nella speranza di cercare di evitare che accadesse, il programma è stato costruito con successo, ma la prevenzione è fallita. lol
Questo tipo di domanda è così comune, eppure così assurda. Se metti un sito web online, quando le persone lo "visualizzano", lo stanno scaricando sul loro computer, essenzialmente lo stai dando loro. Allora la domanda diventa "Ho dato il mio sito a qualcuno, come posso non darlo a loro?".
ma perché ne hai bisogno? il suo requisito senza senso? se la tua casella di posta viene mostrata pubblicamente, puoi impedire ma qui il sito web è solo per dare informazioni e dopo aver creato il sito web non vuoi darlo? allora qual è il motto del tuo sito web?
non doveva essere un requisito, volevo solo sapere se può essere fatto. Solo la mia curiosità.
Realizzi l'intero sito con una qualche forma di codice lato server (in questo modo le uniche cose che l'utente sarebbe in grado di scaricare è ciò che gli viene inviato).
questo sarebbe davvero utile solo per i siti più semplici
Undici risposte:
Adi
2013-07-05 14:56:36 UTC
view on stackexchange narkive permalink

No, non c'è modo di farlo. Senza impostare i limiti dei parametri di connessione, non c'è nemmeno modo di renderlo relativamente difficile. Se un utente legittimo può accedere al tuo sito web, può copiarne il contenuto e, se può farlo normalmente con un browser, può scrivere uno script.

Potresti impostare restrizioni utente-agente, convalida dei cookie, connessioni massime e molte altre tecniche, ma nessuna fermerà qualcuno determinato a copiare il tuo sito web.

Puoi anche filigranare tutte le tue immagini in modo da poter dimostrare in seguito che erano originariamente tue. Tuttavia ciò non impedirà la copia, ma aiuterà solo dopo il fatto.
E non dimenticare di menzionare che qualsiasi misura del genere è più probabile che infastidisca i visitatori legittimi piuttosto che ostacolare qualcuno che si dedichi attivamente a aggirarli.
Allora come Themeforest gestisce questo?
@Four_0h_Three Le filigrane sono in gran parte inutili. QUALSIASI filigrana ragionevole può essere rimossa in PhotoShop in 30 secondi (o meno). Se la tua filigrana non può essere rimossa così facilmente, probabilmente si trova in una posizione odiosa e sta rovinando completamente il divertimento che i tuoi utenti avrebbero ottenuto dal contenuto. Fatto: non c'è modo di ottenere contenuti ospitati visualizzabili derubati da qualcuno che lo desidera davvero. Accetta questo fatto e continua con la tua vita.
Fondamentalmente, se c'è un modo per prevenirlo, c'è un modo per aggirarlo.
goodguys_activate
2013-07-05 16:13:00 UTC
view on stackexchange narkive permalink

Proteggi la parte del sito che desideri proteggere con un nome utente e una password. Quindi assegna un nome utente e una password solo alle persone che firmano un accordo di non divulgazione (o simile) che dice che non estrarranno o copieranno le informazioni dal tuo sito.

Un altro trucco è far caricare tutti i tuoi contenuti da AJAX ... e fai caricare l'URL dei dati AJAX dai percorsi che cambiano (come ~ / todays-date) e sincronizzalo con javascript. Quindi, anche se qualcuno scaricasse i tuoi contenuti, i dati sarebbero obsoleti entro 24 ore.

Anche in questo caso, nulla impedirà a un determinato aggressore esperto di ottenere una copia offline, puoi solo renderlo più difficile quindi non ne vale la pena.

Per essere onesti, non è necessario che sia AJAX. Qualsiasi contenuto generato dinamicamente indipendentemente dalla tecnologia sottostante funzionerà allo stesso modo: l'attaccante potrebbe facilmente copiare solo un'istantanea del suo output, mentre il backend (applicazione, database, ...) coinvolto nella generazione di questi contenuti non dovrebbe essere accessibile a un attore non autorizzato con qualsiasi altro mezzo.
"NDA, (o simile) che dice che non estrarranno o copieranno le informazioni dal tuo sito." - Questo è ridicolo. Come farai a far rispettare un simile contratto? I tuoi utenti lo tollereranno?
@Freiheit L'OP non dice se ha un sito pubblico o un piccolo sito B2B per professionisti. Se il pubblico è piccolo, può indirizzarlo con l'identificazione, ecc. Come lo imponi? Esistono servizi a pagamento che ricercano furti di copyright su altri siti. Anche la steganografia può essere utilizzata per tracciare i trasgressori in base al nome utente o all'IP.
TildalWave
2013-07-05 19:15:45 UTC
view on stackexchange narkive permalink

Come ha già sottolineato @Adnan nella sua risposta, non c'è davvero modo di impedire a una persona determinata di copiare istantanee del tuo sito web. Ho usato la parola istantanee qui, perché è ciò che questi scraper di contenuti (o raccoglitori ) stanno davvero copiando. Non hanno (o almeno non dovrebbero) avere accesso al tuo back-end in cui i contenuti del tuo sito web vengono effettivamente generati e visualizzati all'utente finale, quindi il meglio che possono fare è copiare il suo output, uno che puoi generare in tale modo di cambiare nel tempo o adeguarsi in base al destinatario previsto (schemi DRM, watermarking, ...), come ha sottolineato @ makerofthings7 nella sua risposta.

Quindi questo tanto su ciò che è già stato risposto. Ma c'è una cosa su questa minaccia che ritengo non sia stata ancora ben trattata nella risposta menzionata. Vale a dire, la maggior parte di questo tipo di scraping dei contenuti viene eseguita da crawler web opportunistici e automatizzati e vediamo attacchi mirati molto più rari. Beh, almeno in numero - abbi pazienza.

Questi crawler automatici possono effettivamente essere inseriti in una lista nera in modo abbastanza efficace tramite l'uso di vari WAF (alcuni potrebbero persino utilizzare honeypot per determinare le minacce in modi euristici ) che mantengono aggiornato il database dei domini inseriti nella blacklist (CBL o Community Ban Lists , DBL o Domain Block List , DNSBL o Blackhole List basati su DNS , ...) da cui operano tali scraper di contenuti automatizzati. Questi WAF negheranno o concederanno l'accesso alla tua applicazione web per il servizio dei contenuti in base a tre approcci principali:

  • Inserimento nella lista nera deterministica : si tratta di rilevamenti basati sulle caratteristiche delle richieste web che gli scraper di contenuti effettueranno. Alcuni di questi sono: Richiedi indirizzo IP di origine, Nome host remoto risolto DNS inverso, Ricerca DNS inversa confermata in avanti ( vedi la spiegazione in una delle mie domande qui), Stringa agente utente, URL richiesta ( la tua applicazione web potrebbe ad esempio nascondere un indirizzo URL honeytrap che un content scraper potrebbe seguire in una delle sue risposte, dopo aver determinato che la richiesta non proveniva da un indirizzo autorizzato come crawler / spider dei motori di ricerca legittimi) ... e altre informazioni sulle impronte digitali associate a richieste web automatizzate.

  • Blacklist euristica : questo è un modo per determinare una minaccia ponderando i parametri di un singola richiesta web descritta nell'approccio deterministico (i filtri antispam utilizzano un approccio simile basato sul calcolo della probabilità bayesiana) o analizzando più richieste web, come: Tasso di richiesta, Ordine di richiesta, Numero di richieste illegali, ... che potrebbe aiutare a determinare se la richiesta proviene da un utente reale e previsto, o un crawler automatico.

  • DNSBL / CBL / DBL esterni : ho già menzionato il fatto di affidarsi a DNSBL / CBL esterni / DBL (ad es Project Honey Pot, Spamhaus, UCEPROTECT, ...), la maggior parte dei quali sono in realtà molto più utili del semplice tenere traccia degli spammer e spambot host infetti e mantieni un tipo di reato (ad es. spammer del forum , abuso della velocità di scansione ) sopra gli indirizzi IP, i nomi host, CIDR intervalli, ... anche nelle liste nere che pubblicano. Alcuni WAF avranno la possibilità di connettersi a questi database, risparmiandoti la fatica di essere preso di mira dallo stesso attore che potrebbe essere già stato inserito nella lista nera per la stessa attività rilevata su un altro server web.

Ora, una cosa deve essere detta abbastanza chiaramente: nessuno di questi metodi può essere considerato a prova di proiettile! Rimuoveranno la maggior parte delle richieste web offensive, il che è prezioso da solo e ti consentirà di concentrarti meglio su quelle più difficili da rilevare i trasgressori che in qualche modo hanno aggirato le tue protezioni.

Ce ne sono ovviamente innumerevoli tecniche per il rilevamento automatizzato di crawler / content scrapers (e le loro contromisure - tecniche di evitamento del rilevamento) che non descriverò qui, né elencerò tutti i possibili WAF e le loro capacità, non volendo testare la tua pazienza o raggiungere i limiti dello scopo di questo Q&A . Se desideri saperne di più sulle tecniche che possono essere utilizzate per contrastare tali visitatori indesiderati, ti consiglio di leggere la documentazione sui progetti OWASP Stinger e OWASP AppSensor.


Modifica per aggiungere : i suggerimenti degli autori di HTTrack possono essere letti nelle FAQ di HTTrack Website Copier: Come limitare l'abuso di rete - Domande frequenti sugli abusi per i webmaster, e le ragioni per cui un singolo metodo deterministico di rilevamento non funzionerà (a meno di inserire nella lista nera gli indirizzi IP offensivi dopo il fatto o attraverso l'esperienza di altri honeynet), se l'avversario è impostato per offuscare l'agente utente dello spider impostandola su una qualsiasi delle tante stringhe dell'agente utente di browser Web reali e legittimi e la mancanza di rispetto delle direttive robots.txt , diventano piuttosto evidenti dando un'occhiata alla HTTrack Users Guide. Per risparmiarti il ​​fastidio di leggerlo, HTTrack include una semplice configurazione e flag della riga di comando per farlo funzionare in modalità invisibile e apparire altrettanto benigno come qualsiasi altro utente legittimo per tecniche di rilevamento più semplici.

Se una lista nera fosse davvero così utile, Google la userebbe invece di limitare semplicemente l'accesso al proprio google.maps. Non importa quanto sia grande la tua lista nera, alla fine finisci per aggravare e persino alienare gli utenti legittimi. BTW: Fare un dollaro non era l'obiettivo principale di Google (non che non amassero i soldi), ma limitare l'abuso (raccolta automatica dei dati). E anche i limiti di utilizzo sono facili da aggirare: diversi IP utente per una volta. Quindi il commento di @CodesInChaos è valido.
@Jeffz - YMMV ed è ovviamente specifico dell'applicazione. Detto questo, non vedo la rilevanza del tuo commento. Io (e molti altri) ho già menzionato la limitazione della velocità o altre quote basate su tempo / client come possibile modo per difendersi dal furto di contenuti. E ovviamente la sensibilità alla lista nera PU essere dinamica e le voci possono essere automatizzate, in base agli approcci che ho descritto. Non sono d'accordo: la lista nera è utile, ma ovviamente in misura limitata. Per favore, leggi almeno le parti in grassetto della mia risposta, potresti notare che ho già detto che è a malapena considerato a prova di proiettile. Ma aiuterà! ;)
Tom Leek
2013-07-05 19:00:33 UTC
view on stackexchange narkive permalink

Tutto ciò che l'utente umano vede , può registrarlo. Come sottolinea @Adnan, questo è piuttosto semplice e può essere automatizzato.

Tuttavia, alcuni siti hanno ancora un relativo successo nello scoraggiare lo slurping di massa. Considera, ad esempio, Google Maps. Molte persone hanno tentato, occasionalmente, di recuperare mappe ad alta definizione di ampie aree tramite script. Alcuni ci sono riusciti, ma la maggior parte è stata catturata dalle difese di Google. Accade così che sia difficile realizzare un downloader automatico che agisca, dal punto di vista del server, come se fosse sotto il controllo umano. Gli esseri umani hanno tutti i tipi di latenze e modelli di utilizzo che un astuto amministratore di sistema può notare e controllare.

Trucchi simili vengono eseguiti, ad esempio, su Stack Exchange. Se provi ad automatizzare l'accesso al sito, verrai presto reindirizzato a una pagina con un CAPTCHA.

In definitiva, questo tipo di sicurezza non è molto soddisfacente perché il difensore e l'attaccante è sullo stesso piano: astuzia contro astuzia. Quindi, questo è costoso: richiede riflessione e manutenzione. Tuttavia, alcuni siti lo fanno comunque.

Un modo generico per gli aggressori di sconfiggere le misure di sicurezza anti-automazione è "automatizzare" lo slurping con gli umani reali. In alcuni paesi è possibile assumere lavoratori umani molto economici.

Oppure assumi persone per risolvere i CAPTCHA
FWIW, inseriamo anche nella blacklist IP offensivi (su Stack Exchange).
@Sklivvz Che tipo di idiota cerca di raschiare SE se solo potessero scaricare il dump reso disponibile comunque?
@TobiasKienzler il tipo di idiota che trova più facile semplicemente reskin una copia del sito invece di scrivere tutto il livello di presentazione ... :-)
Nick
2013-07-05 18:32:05 UTC
view on stackexchange narkive permalink

Qualificherei ciò che dice @Adnan aggiungendo che, sebbene in generale non sia possibile impedire la lisciviazione del sito nel tempo , uno strumento specifico può mostrare un comportamento che può essere rilevato con una certa certezza una volta che una certa quantità delle richieste sono state fatte. L'ordine in cui si accede agli URL può essere deterministico, ad esempio prima la profondità, prima la larghezza, crescente o decrescente in ordine alfabetico, l'ordine in cui sono visualizzati nel DOM e così via. L'intervallo tra le richieste può essere un indizio, se l'agente ha eseguito con successo del codice javascript (NoScript e simili a parte), il supporto del client per l'API delle prestazioni del browser, il tempo trascorso tra le richieste in relazione alla complessità della pagina e se esiste o meno un flusso logico tra richieste. A meno che un leacher di siti Web non ne tenga conto, potresti avere una possibilità. Il controllo dell'agente utente non dovrebbe essere efficace in quanto un buon leacher fingerebbe di essere un bot conosciuto, quindi a meno che tu non voglia escludere Google e anche altri motori di ricerca, la conoscenza degli IP utilizzati dai motori di ricerca sarebbe utile.

jsedano
2013-07-05 19:56:16 UTC
view on stackexchange narkive permalink

Prima di tutto, l'unico modo per impedire che il tuo sito venga copiato è in realtà non renderlo mai pubblico a nessuno tranne te.

Un modo in cui potresti provare a persuadere le persone a farlo è con significa legale, non sono un avvocato quindi non so quali passi dovresti fare, se il tuo contenuto è originale potresti limitare il copyright o qualcosa di simile.

Penso che se temi che il tuo sito possa essere copiato, deve essere un sito web davvero davvero fantastico.

A L
2013-07-06 05:42:31 UTC
view on stackexchange narkive permalink

Risposta breve, no, se l'utente carica una pagina, l'utente può copiare l'HTML visualizzando la sorgente.

Se il copiatore del sito Web ha un particolare agente utente, è possibile bloccarlo. Vedi Stack Exchange per i dettagli.

Un'altra soluzione potrebbe essere quella di creare una pagina web Flash; quelli sono comunque difficili da copiare a mano.

In caso contrario, metterei tutto in una directory con accesso limitato che solo gli script PHP lato server possono recuperare. Quindi se la pagina è costruita con molti include (uno per una barra di navigazione, uno per l'intestazione, uno per javascript, uno per il piè di pagina, uno per il contenuto del corpo) allora crea un'altra directory di file php che leggono la directory protetta con include, quindi crea un AJAX che carica dinamicamente quei file PHP. Sarebbe difficile per qualsiasi cosa copiarlo senza eseguire il rendering del JavaScript (anche se non so se ciò fermerebbe il software o un individuo con uno strumento di ispezione del codice live.

Oppure puoi inserire un qualche tipo di verifica umana sul tuo sito in modo che una directory PHP protetta non venga chiamata a meno che l'utente non faccia clic specificamente su un oggetto DOM non collegato (come una riga che dice "inserisci qui") che attiva il caricamento del contenuto.

Tobia
2013-07-06 06:17:38 UTC
view on stackexchange narkive permalink

Disclaimer: questa è una risposta malvagia. Non permetto nulla di quanto segue.


I browser moderni sono in grado di eseguire calcoli generici (Turing-complete), tramite Javascript e possibilmente altri mezzi. Anche i loro motori di rendering HTML + CSS di base sono pezzi di software incredibilmente elaborati, in grado di visualizzare (o nascondere) i contenuti in una varietà di modi. Se ciò non bastasse, tutti i browser moderni rendono disponibili primitive grafiche, ad esempio tramite SVG e Canvas, e consentono il download di caratteri personalizzati con cui eseguire il rendering del testo.

Se metti insieme tutto questo e altri ancora, scoprirai che ci sono una serie di livelli di esecuzione tra il codice sorgente del sito ei pixel che compongono le lettere e le parole che l'utente può leggere.

Tutti questi livelli di esecuzione possono essere offuscati e / o sfruttato.

Ad esempio, puoi generare markup che ha poca o nessuna somiglianza con l'output grafico, per fare in modo che guardare il sorgente HTML del tuo sito web sia un esercizio futile. Puoi utilizzare un tag HTML per lettera, riordinandoli con un uso creativo di float: e position: , nascondendone alcuni con regole CSS complesse generate e aggiungendone più che non c'erano, con contenuti generati da CSS.

Puoi creare un font che utilizzi una mappatura personalizzata tra codici di caratteri e glifi, in modo che copiare e incollare i tuoi contenuti produca spazzatura totale, parolacce! Puoi dividere le lettere in due o più parti e utilizzare Unicode combinando i caratteri per rimetterle insieme. Puoi fare tutto questo con un generatore dinamico, creando un nuovo capolavoro casuale di offuscamento per ogni richiesta HTTP.

Puoi scrivere un programma che creerà complessi algoritmi Javascript, che quando eseguito sul client riempirà alcuni pezzi richiesti del puzzle, in modo che senza il supporto Javascript e una discreta quantità di tempo della CPU del client, il markup da solo sarebbe inutili. 50 ms di tempo della CPU moderna non vengono notati dalla maggior parte e sono sufficienti per eseguire alcuni algoritmi piuttosto malvagi.

Punti bonus se provi a raschiare il tuo sito Web offuscato utilizzando un browser headless, al fine di avere un CSS completo e Stack JavaScript. Quindi prova a trovare modi (o euristiche) per distinguere un browser reale da quello senza testa. Quindi inserisci alcune trappole nel codice Javascript generato, in modo che quando cade nel case del browser senza testa, l'algoritmo va in un ciclo infinito, o blocca il browser o genera parolacce e lampi che inducono sequestri sullo schermo.

Questi sono fuori dalla mia testa, ci sono (numerabilmente) infiniti altri modi per scopare con i computer delle persone.

Ora sii un bravo ragazzo / ragazza e prendi la tua pillola blu: - )

Cosa ho appena letto? In realtà l'offuscamento, l'uso di JavaScript e qualsiasi altro _algo malvagio_ ha davvero pochi vantaggi nel nascondere e / o alterare in altro modo l'output che i raccoglitori di siti Web saranno in grado di interpretare. Questi sono oggigiorno incredibilmente avanzati e non meno competenti dei migliori browser in circolazione. Prendiamo ad esempio il progetto Chromium, un componente browser completo e competente quanto Chrome stesso (che in realtà è, meno il piacere per gli occhi) che può essere facilmente integrato in qualsiasi applicazione di web scraping. Quindi l'istantanea verrà scattata su _DOM ready_, nessun problema.
Potresti dare un'occhiata a Book of Infinity di David Madore, è un piccolo programma CGI che genera un numero infinito di pagine per punire i downloader di massa che non rispettano il file robots.txt
@loreb - Onestamente non lo capisco. Quindi il tuo sito web viene raschiato da qualche crawler ospitato nel cloud che non rispetta il tuo `robots.txt` e tu fai un DDoS autoinflitto sul tuo sito web come punizione per quel crawler? Come potrebbe funzionare? Ti rendi conto che aggiungeresti inutilmente al carico del server ed esauriresti le sue risorse (CPU, memoria, larghezza di banda, ...), se il crawler è distribuito, ha una larghezza di banda apparentemente illimitata e non si preoccupa della sua velocità di scansione? Dovresti abbandonare le sue richieste il prima possibile, non dargli altro lavoro da fare.
@TidalWave certo, il libro dell'infinito è un programma scherzoso, sia nell'atteggiamento (insistenza nel riprodurre lo stesso "libro" privo di significato, e non solo contenuto casuale) sia nella pratica, esattamente come lei ha descritto. Detto questo, se dovessi prendere sul serio il mio suggerimento, lo difenderei affermando che (1) l'OP ha menzionato HTTrack in un modo che suggerisce ai singoli utenti il ​​download di massa di un sito Web piuttosto che un crawler distribuito, e che (2) si potrebbe usare il libro dell'infinito per generare un tarpit, simile allo spamd di OpenBSD.
Andy
2013-07-06 18:26:07 UTC
view on stackexchange narkive permalink

Prima di tutto, come altri hanno detto, tutto ciò che puoi vedere puoi copiare, usando vari metodi. Dipende dal motivo per cui vuoi impedire che il tuo sito web venga copiato, ma il metodo più efficace sarebbe probabilmente aggiungere filigrane in modo che tutti sappiano da dove proviene. Forse anche un avviso educato che chiede alle persone di non copiare il tuo sito web non andrebbe perso.

Tuttavia, tornando alla tua domanda originale e come impedire al software di copiare il sito web, credo che CloudFlare abbia un'applicazione web firewall. So certamente che Acunetix Web Vulnerability Scanner non esegue la scansione di un sito Web che utilizza CloudFlare. È una soluzione gratuita e dovrebbe anche aiutare a velocizzare il tuo sito web.

Ora però esiste una soluzione infallibile e tutto può essere aggirato. La cosa migliore che puoi fare è utilizzare una combinazione delle risposte qui, a seconda di quanto hai bisogno / vuoi proteggere il tuo sito web. Il miglior consiglio, però, è che se non vuoi che venga copiato, non lasciarlo alle persone.

PythonIsGreat
2013-07-05 18:26:52 UTC
view on stackexchange narkive permalink

Anche AJAX con parametri di data può essere duplicato. Ho raschiato siti con AJAX pesante utilizzando i parametri GET / POST. Se ho davvero bisogno di emulare il browser posso semplicemente usare il selenio o qualcosa del genere. Posso sempre trovare un modo per raschiare un sito se lo volessi davvero. Il captcha è probabilmente la cosa più difficile da affrontare. Anche allora c'è il cecchino Captcha e altri moduli per assistere in queste aree.

Java D
2013-07-06 14:19:50 UTC
view on stackexchange narkive permalink

Guarda questi link potresti ottenere una soluzione da questo :)

Come fermare HTTrack?

Usa robots.txt per prevenire sito web da essere strappato?

OR

Il modo più semplice è identificare l'ID del browser che sta navigando nella tua pagina, se si tratta di httpstrack bloccalo (devi configurare il tuo server o la tua abilità di programmazione per caricare la pagina diversa di conseguenza)

Grazie ..

HTTrack è un'applicazione open source. Puoi facilmente modificare l'origine e sovrascrivere qualsiasi meccanismo che rispetti `robots.txt`.
Non esiste un unico metodo deterministico che identifichi i client HTTrack se sono impostati per offuscare la loro firma e mancare di rispetto alle direttive `robots.txt`. Non senza ricorrere a metodi di rilevamento molto più avanzati. Citando [HTTrack user guide] (http://www.httrack.com/html/fcguide.html) otteniamo questi due motivi per cui il tuo suggerimento non funzionerebbe: _ "Il campo" User Agent "può essere impostato per indicare qualsiasi è desiderato al server "_ per il tuo suggerimento sull'uso di UA, e _" `sN` segue i tag` robots.txt` e meta robots (`0` = mai,` 1` = a volte, * `2` = sempre) "_ per il blocco in` robots.txt`.


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...