2016-03-18 16 views
2

Bir belirteç kimlik doğrulaması REST bitiş noktasına bağlanmak için python 2.7 urllib2 kitaplıklarından yararlanmak isteyen bir python 2.7 projem var.urllib2 belirteci güvenliği için özel işleyici

{ 
    "username" : "<my username>", 
    "password" : "<my password", 
    "expiration" : <time in minutes>, 
    "referer" : "<referer url>" 
    "f" : "json" 
} 

Ben geri https üzerinden değerlerini almak için basit POST yapabileceğini biliyorum ama bu süreci kapsayacak şekilde urllib2.BaseHandler sınıfını uzatabilirsiniz, merak ediyorum: Form parametreleri gibi nelerdir?

aşağıdaki bilmesi gerekir bu işleyicisi yapmak inanıyoruz: belirteç bitiş noktasının

  1. Url
  2. referer
  3. kullanıcı adı/şifre

Eğer bir işleyici özelleştirebilir miyim bu çok? Eğer öyleyse, bir kişi bunun nasıl yapılacağına işaret edebilir mi?

Eğer

cevap

0

Sadece yukarıdaki Handler nasıl kullanılır

ayıklama için bunlar baskı ifadeleri kaldırabilirsiniz bir işleyici

import urllib2 
import urllib 


class ExtendedHandler(urllib2.BaseHandler) 
     def __init__(self): 
      print "create object" 


     def https_request(self,req): 
      print "Got a request" 
      req.add_data(urllib.urlencode({'username': '<username>', 'password': '<password>', 'expiration': "<time>", 'referer': "<referer>", "f" :"json"})) 
      return req 

tanımlayın ederiz.

bir openerDirector O python-requests kütüphane ile çok kolaydır

opener = urllib2.build_opener(ExtendedHandler()) 
opener.open("your httpsurl") 
+0

Nedeni mi var? –

+0

Yani, hızlı örneğinize göre, değişkenleri kodluyorsunuz. (Ben oylamadım btw). –

+0

Bu kodlama, post verisi özel karakter içindir .. –

1

oluşturun.

import requests 
from requests.auth import HTTPBasicAuth 

data = { 
    "username" : "<my username>", 
    "password" : "<my password", 
    "expiration" : <time in minutes>, 
    "referer" : "<referer url>" 
    "f" : "json" 
} 

response = requests.post(url, data=data) 
# If the url requires basic http authentication. 
response = requests.post(url, auth=HTTPBasicAuth('user', 'pass'), data=data) 
# assert response.ok == True 
# response.json() 
# response.text 

# To perform bearer token authentication use some thing like 
auth_header = {'Authorization': 'Bearer ' + access_token} 
metadata = requests.get(
    API_URL + '/v1/users/self', headers=auth_header).json() 
İlgili konular