Python 来自不同国家/地区的请求

Python 来自不同国家/地区的请求,python,proxy,ip,Python,Proxy,Ip,我想在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'])

我想在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发送一个请求,该IP将被识别为来自该国家。如何做到这一点

你可以做的就是诊断,并尝试找出这是否可行

您可以做的第一件事是使用
VPN
或任何
代理
模拟您来自加拿大的位置。如果这样做有效,并且您能够加载所需的页面,那么位置很可能是由请求IP确定的

实际上,从服务的角度来看,在您的情况下,Playstation商店,没有其他可靠的信息可以从中检索客户的地理位置

因此,如果是这种情况,唯一合理的解决办法就是以某种方式更改您的IP地址。但无论如何,如果您在应用程序端这样做,那么将有太多的层(例如路由器)暴露您的真实位置,因为到达服务的最终
IP数据包
将包含真实的
real IP

因此,这与您的应用程序或请求客户端无关,您应该考虑在它前面放什么

如果你的问题是:

如何在应用程序方面实现我的目标

…那么答案是:很可能不可能:/

但如果你问:

我怎样才能实现我的目标

…然后还有一些选择:

  • 使用
    proxy
    VPN
    。您肯定会找到一个VPN服务,它将为每个位置提供访问凭据(例如,
    OpenVPN config
    ),因此您可以通过编程方式加载它们。这可以在应用程序端实现
  • 还有那些鲁莽的……在你想要请求的每个位置都有机器:)

    • 如果我理解正确,您基本上是在问如何使用代理在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()
      
      如果你想让服务认为你在使用浏览器,标题是很好的,它们通常有防机器人的功能。您需要将代理地址替换为您自己的代理,这只是出于演示目的而发明的代理

      可以在此处找到代理列表,例如: 如果上面给出的代理不起作用。 如果其中一个代理更适合您的特定位置(假设第二个代理最适合您),最好将代理的随机选择更改为仅第二个

      random.choice(CAproxies) -> CAproxies[1]
      
      Caproxis[3]最适合我。 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.'
      
      >html[0:250]
      
      “\n\n\n\n\n\n\n\n\n值得注意的是,您试图做的事情几乎肯定违反了索尼的ToS,根据您居住的地方,这可能会给他们合法的理由取消您的订阅而不退款,甚至可能是非法的。如果您知道这一点,并且无论如何都想这么做,那当然取决于您,但请确保当然你知道你在做什么。@abarnert理解。这更多的是为了验证某个国家某个头衔(我们拥有或管理的头衔)的价格是否下降。这是为了能够从最终用户的角度审核价格。您是否有代理服务器或VPN服务器或类似的东西?此网站似乎包含大量JS代码。我不认为简单地使用
      请求
      就足以获取内容。@skyline75489这是正确的。在页面,这就是解析信息所需的内容。例如:@David542如果您最终使用了
      OpenVPN
      ,我可以用
      python
      代码来帮助您控制它,因为其中有一些棘手的部分。谢谢,您能用一个加拿大代理显示一个真实的例子,以显示url返回了真实的响应吗?在那之后,我将奖励赏金。你可以在这里找到代理,例如:我可以将其添加到答案中。