首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自不同国家知识产权的请求

来自不同国家知识产权的请求
EN

Stack Overflow用户
提问于 2015-05-17 21:31:28
回答 2查看 3.6K关注 0票数 5

我想在Playstation商店看来自不同国家的电影内容。然而,playstation商店根据请求的位置阻止IP,因此不能从美国观看加拿大的电影:

CN-0000000000236063

有什么方法可以这样做吗?

代码语言:javascript
复制
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的请求,该请求将被确认为来自该国家。这是怎么做的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-21 19:20:57

如果我正确理解,您基本上是在问如何使用代理在python中发出url请求?

如果是,你可以这样做:

代码语言:javascript
复制
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,以防上面给出的代理不起作用。如果其中一个代理对您的特定位置工作得更好(假设第二个代理对您最适合),那么最好将代理的随机选择改为只选择第二个代理。即

代码语言:javascript
复制
random.choice(CAproxies) -> CAproxies[1]

CAproxies3最适合我。html中的前250个字符:

代码语言:javascript
复制
>>> 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.'
票数 4
EN

Stack Overflow用户

发布于 2015-05-20 20:44:25

你可以做的就是诊断,并试图找出这是否是可能的。

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

实际上,从服务的角度来看,在您的例子中,Playstation商店没有任何其他可靠的信息可用于检索客户端的地理位置。

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

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

所以如果你的问题是:

如何在应用程序端实现我的目标?

...then的答案是:很可能不可能

但如果你问:

我怎样才能达到我的目标?

...then有以下几种选择:

  • 使用proxyVPN。您肯定会找到一个VPN服务,它将为每个位置提供访问凭据(例如OpenVPN config),因此您可以通过编程加载它们。可以在应用程序端实现。
  • 以及您希望从以下位置请求的每个位置的reckless...have机器:)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30292361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档