2016-04-03 27 views
0

Bir instagram api aracılığıyla bir kullanıcının takip etmesini veya takip etmesini istemeyen http isteklerini gönderecek bir otomasyon yapmaya çalışıyorum, şu anda Python İstekleri modülünü kullanıyorum ve Bunu 'http://pikore.com' sitesinden yapmaya çalışıyorum. Benim şu anki kodudur edilir:Python İstekler: 302 yönlendirmesinden yanıt tanımlama bilgisi nasıl alınır

import requests 
from requests.auth import HTTPBasicAuth 

s = requests.Session() 
s.get('http://pikore.com') 

print(s.cookies) 
s.get('http://www.pikore.com/session/new?from=%2F', auth=HTTPBasicAuth('USERNAME', 'USERSECRET')) 
pikore_session = s.cookies['_pikore_session'] 
print(s.cookies) 
s.get('http://pikore.com') 
print(s.cookies) 

cookies = { 
'_pikore_session': pikore_session, 
'token': 'BAhJIjcyNTY5NDczOTIuZWIxM2FlYi41Mjc3ZTI4NjI4ZDM0NDRlOGRjNWNjZmFjNWU3YmJmYgY6BkVU--9b52c6305368f28c83ffc288e9d55e94b3e864db', 
} 

headers = { 
    'Host': 'www.pikore.com', 
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0', 
    'Referer': 'http://www.pikore.com/nike', 
} 

print(s.get('http://www.pikore.com/follow/13460080', headers=headers, cookies=cookies)) 
s.get('http://www.pikore.com/') 
print(s.cookies) 

Yani bu işler ve istediğim tek şey, yetkilendirme sadece '_pikore_session' çerez alacak hattı, ancak belirteci çerez, verilen isteği gerçekleştirecek almak. İnstagram yetkilendirme yönlendirmesiyle oturum açtıktan sonra, üç kez yönlendirirsiniz ve sonunda web sitesine giriş yaparsınız, giriş yapmış olursunuz, ancak üçüncü yönlendirme üzerinde 'belirteç' yanıt çerezi çıkardığını görebilirim, Birinin bunu elde etmesini istiyorum, böylece her seferinde elimden gelmek zorunda kalmam.

cevap

1

Bugün bunu çözmeye çalışıyordum ve a relevant bug in requests'u buldum. auto_redirect kapatarak JohnCC330 en çözümünü kullanma

benim için çalıştı: bu yardımcı olur

res = requests.post(
    host, 
    data={'somefield':'my value'}, 
    allow_redirects=False) 

if res.status_code == 302: # expected here 
    jar = res.cookies 
    redirect_URL2 = res.headers['Location'] 
    res2 = requests.get(redirect_URL2, cookies=jar) 
    # res2 is made with cookies collected during res' 302 redirect 

Hope,

Bob

İlgili konular