Pinterest API - Rückgabe von 403 für die EC2-Instanz

Ich versuche, die Anzahl der Pins für eine bestimmte URL abzurufen. Ich habe dieses Python-Skript erstellt, das zwei separate URLs verwendet und die Anzahl der Pins für jeden ausgibt. Wenn ich dieses Skript auf meinem lokalen Computer ausführe, wird eine 200-Antwort mit der Pin-Anzahl zurückgegeben. Wenn ich jedoch genau dasselbe Skript auf meiner EC2-Instanz ausführe, wird der Fehler 403 zurückgegeben.

Hier ist das Python-Skript:

#!/usr/bin/python

import requests

# Pinterest API
pinterest_endpoint = "http://api.pinterest.com/v1/urls/count.json?callback=&url="

# Emulate a SQL Query result (id, url)
results = [(1, "http://allrecipes.com/recipe/easter-nests/detail.aspx"), (2, "http://www.foodnetwork.com/recipes/ina-garten/maple-oatmeal-scones-recipe/index.html")]

# Cycle thru each URL
for url in results:
    # Print URL details
    print url[0]
    print url[1]
    print type(url[0])
    print type(url[1])
    print "Downloading: ", url[1]

    # Create Complete URL
    target_url = pinterest_endpoint + url[1]
    print target_url

    # Hit Pinterest API
    r = requests.get(target_url)
    print r
    print r.text
    # Parse string response
    start = r.text.find('\"count\"')
    end = r.text.find(',', start+1)
    content = len('\"count\"')
    pin_count = int(r.text[(start+content+1):end].strip())
    print pin_count

Dies ist die Antwort, die ich auf meinem lokalen Computer bekomme (Ubuntu 12.04):

$ python pin_count.py
1
http://allrecipes.com/recipe/easter-nests/detail.aspx
<type 'int'>
<type 'str'>
Downloading:  http://allrecipes.com/recipe/easter-nests/detail.aspx
http://api.pinterest.com/v1/urls/count.json?callback=&url=http://allrecipes.com/recipe/easter-nests/detail.aspx
<Response [200]>
({"count": 997, "url": "http://allrecipes.com/recipe/easter-nests/detail.aspx"})
997
2
http://www.foodnetwork.com/recipes/ina-garten/maple-oatmeal-scones-recipe/index.html
<type 'int'>
<type 'str'>
Downloading:  http://www.foodnetwork.com/recipes/ina-garten/maple-oatmeal-scones-recipe/index.html
http://api.pinterest.com/v1/urls/count.json?callback=&url=http://www.foodnetwork.com/recipes/ina-garten/maple-oatmeal-scones-recipe/index.html
<Response [200]>
({"count": 993, "url": "http://www.foodnetwork.com/recipes/ina-garten/maple-oatmeal-scones-recipe/index.html"})
993

Dies ist die Antwort, die ich bekomme, wenn ich dasselbe Skript auf meiner EC2-Instanz (Ubuntu) ausführe:

$ python pin_count.py
1
http://allrecipes.com/recipe/easter-nests/detail.aspx
<type 'int'>
<type 'str'>
Downloading:  http://allrecipes.com/recipe/easter-nests/detail.aspx
http://api.pinterest.com/v1/urls/count.json?callback=&url=http://allrecipes.com/recipe/easter-nests/detail.aspx
<Response [403]>
{ "status": 403, "message": "Forbidden" }
Traceback (most recent call last):
  File "cron2.py", line 32, in <module>
    pin_count = int(r.text[(start+content+1):end].strip())
ValueError: invalid literal for int() with base 10: 'us": 403'

Ich verstehe, warum es eine ValueError-Nachricht ausspuckt, was ich nicht verstehe, istWarum erhalte ich eine 403-Antwort, wenn ich das Skript über meine EC2-Instanz ausführe, aber es funktioniert erwartungsgemäß auf meinem lokalen Computer.

Jede Hilfe wäre sehr dankbar!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage