我想在Playstation商店看来自不同国家的电影内容。然而,playstation商店根据请求的位置阻止IP,因此不能从美国观看加拿大的电影:
有什么方法可以这样做吗?
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基本上,这样您就可以指定一个国家,然后发送来自IP的请求,该请求将被确认为来自该国家。这是怎么做的?
发布于 2015-05-21 19:20:57
如果我正确理解,您基本上是在问如何使用代理在python中发出url请求?
如果是,你可以这样做:
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()如果您想让服务认为您使用的是浏览器,则标题很好,它们通常对机器人具有防御能力。您需要用您自己的代理替换代理地址,这只是一个为说明目的而发明的代理。
在这里可以找到代理列表,例如:http://www.proxy-listen.de/Proxy/Proxyliste.html,以防上面给出的代理不起作用。如果其中一个代理对您的特定位置工作得更好(假设第二个代理对您最适合),那么最好将代理的随机选择改为只选择第二个代理。即
random.choice(CAproxies) -> CAproxies[1]CAproxies3最适合我。html中的前250个字符:
>>> 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.'发布于 2015-05-20 20:44:25
你可以做的就是诊断,并试图找出这是否是可能的。
您可以做的第一件事是使用VPN或任何Proxy来模拟您来自加拿大的位置。如果这是可行的,并且您能够加载所需的页面,那么很可能位置是从请求IP中确定的。
实际上,从服务的角度来看,在您的例子中,Playstation商店没有任何其他可靠的信息可用于检索客户端的地理位置。
因此,如果是这种情况,解决问题的唯一合理办法就是以某种方式更改IP地址。但是无论如何,如果您在应用程序端这样做,将会有太多的层,例如路由器,这些层无论如何都会暴露您的真实位置,因为到达服务的最终IP packet将包含真正的real IP。
因此,这与您的应用程序或请求客户端无关,您应该考虑在它前面放置什么。
所以如果你的问题是:
如何在应用程序端实现我的目标?
...then的答案是:很可能不可能
但如果你问:
我怎样才能达到我的目标?
...then有以下几种选择:
proxy或VPN。您肯定会找到一个VPN服务,它将为每个位置提供访问凭据(例如OpenVPN config),因此您可以通过编程加载它们。可以在应用程序端实现。https://stackoverflow.com/questions/30292361
复制相似问题