2015-05-17 12 views
6

Vorrei vedere il contenuto del film da un altro paese nel negozio Playstation. Tuttavia, i blocchi negozio playstation l'IP in base alla posizione della richiesta, per cui un film in Canada non possono essere visualizzati dagli Stati Uniti:Richiesta da un altro Paese IP

https://store.playstation.com/#!/en-ca/movies/the-house/cid=UV0130-NPVA92773_CN-0000000000236063

C'è un modo per fare qualcosa di simile al seguente:

url = 'https://store.playstation.com/#!/en-ca/movies/the-house/cid=UV0130-NPVA92773_CN-0000000000236063' 
r = requests.get(url, proxy_from = COUNTRY['CA']) # In pseudocode 

Fondamentalmente, in modo da poter specificare un Paese e quindi inviare una richiesta da un IP che verrebbe riconosciuto come proveniente da quel paese. Come sarebbe fatto?

+2

vale la pena notare che ciò che si sta cercando di fare quasi certamente viola ToS di Sony, che, a seconda di dove si dal vivo, potrebbe dare loro motivi legittimi per cancellare il tuo abbonamento senza un rimborso, o potrebbe anche essere illegale. Se lo sai e vuoi per farlo comunque, dipende da te, ovviamente, ma assicurati di essere a conoscenza di ciò che stai facendo. – abarnert

+0

@abarnert capito. Questo è più per verificare che un prezzo è sceso in un determinato paese per un certo titolo (un titolo che possediamo o gestiamo). È per essere in grado di controllare il prezzo dal punto di vista dell'utente finale. – David542

+0

Hai un server proxy o un server VPN o qualcosa del genere? – skyline75489

risposta

2

Se ho capito bene si sono fondamentalmente chiedendo come fare una richiesta URL in Python usando un proxy?

Se sì, si può fare come segue:

import urllib2 
import urllib 
import random 

CAproxies = [{"http":"199.201.122.175:3128", "https":"199.201.122.175:3128"},{"http":"192.99.3.129:3128", "https":"192.99.3.129:3128"},{"http":"192.99.246.101:8118", "https":"192.99.246.101:8118"},{"http":"205.205.129.130:443", "https":"205.205.129.130:443"} ] 


proxies = urllib2.ProxyHandler(random.choice(CAproxies)) 

url = 'https://store.playstation.com/#!/en-ca/movies/the-house/cid=UV0130-NPVA92773_CN-0000000000236063' 

request = urllib2.Request(url) 
request.add_header("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0") 
request.add_header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") 

opener = urllib2.build_opener(proxies) 
urllib2.install_opener(opener) 
r = urllib2.urlopen(request, timeout=15) 
html = r.read() 

Le intestazioni sono buone, se si desidera che il servizio di pensare che si sta utilizzando un browser, di solito hanno difese contro bot. È necessario sostituire l'indirizzo proxy con il proprio proxy, questo è solo un proxy inventato a scopo illustrativo.

Un elenco di proxy può essere trovato qui ad esempio: http://www.proxy-listen.de/Proxy/Proxyliste.html Nel caso in cui il proxy di cui sopra non funziona. Nel caso in cui una delle deleghe funzionano meglio per la vostra posizione particolare (diciamo il 2 ° funziona meglio per voi, potrebbe essere una buona idea per cambiare la scelta casuale di un proxy per solo la seconda. Es

random.choice(CAproxies) -> CAproxies[1] 

CAproxies [3] funziona meglio per me I primi 250 caratteri del codice HTML:.

>>> html[0:250] 
'<!DOCTYPE html>\n\n<html class="ctry mobvportA rgba">\n <head>\n <meta http-equiv="x-ua-compatible" content="IE=edge" />\n <meta charset="utf-8"/>\n\n <link rel="dns-prefetch" href="//ajax.googleapis.com">\n <link rel="dns-prefetch" href="//ssl.' 
+0

Grazie, potresti mostrare un vero esempio di quello con un proxy canadese, per mostrare che l'url restituisce una risposta reale? Dopo, assegnerò la taglia. – David542

+1

Puoi trovare i proxy qui ad esempio: http://www.proxy4free.com/list/webproxy1.html Posso aggiungerlo alla risposta. –

+0

@ David542 Grazie :) –

0

Qualcosa che puoi fare è solo diagnosticare e cercare di capire se è possibile.

La prima cosa che puoi fare è usare un VPN o qualsiasi Proxy simulare la tua posizione come proveniente dal Canada. Se funziona, e sei in grado di caricare la pagina richiesta, allora molto probabilmente la posizione è determinata dall'IP della richiesta.

E in realtà dal punto di vista del servizio, nel tuo caso il negozio Playstation, non ci sono altre informazioni affidabili per recuperare la posizione geografica del cliente.

Quindi, se questa è la situazione, l'unica soluzione ragionevole per il tuo problema sarebbe cambiare il tuo indirizzo IP in qualche modo. Ma comunque, se lo fai dal lato della tua applicazione, ci saranno troppi livelli, ad es. router, che comunque esporranno la tua posizione reale, poiché l'ultimo IP packet che raggiunge il servizio, conterrà il numero reale real IP.

Quindi, non ha nulla a che fare con l'applicazione o il client di richiesta, è meglio pensare a cosa mettere di fronte.

Quindi, se la tua domanda è:

Come raggiungere il mio obiettivo sul lato di applicazione?

... allora la risposta è: molto probabilmente alcun modo:/

ma se chiedete:

Come posso raggiungere il mio obiettivo?

... poi ci sono opzioni:

  • Usare proxy o VPN. Troverai sicuramente un servizio VPN che fornirà le credenziali di accesso (ad esempio OpenVPN config) per posizione, quindi potrai caricarle in modo programmatico. Questo può essere implementato dal lato della tua applicazione.
  • E il temerario ... avere macchine in ogni posizione che si desidera richiedere da :)
+0

@ David542 se finisci con l'uso di 'OpenVPN', posso aiutarti con il codice' python' per controllarlo, dato che ci sono alcuni pezzi complicati. – bagrat