来自不同国家IP的请求

时间:2015-05-17 21:31:29

标签: python proxy ip

我想在Playstation商店查看来自其他国家/地区的电影内容。但是,PlayStation商店会根据请求的位置阻止IP,因此无法从美国查看加拿大的电影:

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

有没有办法做以下事情:

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中发送一个可识别来自该国家/地区的请求。怎么做?

2 个答案:

答案 0 :(得分:2)

如果我理解正确,你基本上是在询问如何使用代理在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]

CAproxies [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.'

答案 1 :(得分:0)

你可以做的只是诊断,并试图弄清楚这是否可行。

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

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

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

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

所以如果你的问题是:

  

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

...然后答案是:很可能没办法:/

但如果你问:

  

我如何实现目标?

...然后有选项:

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