读取python3中的cookie值

2024-10-03 00:17:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python 2代码:

import requests
import json
import Cookie

USERNAME = "<user_name>"
PASSWORD = "<password>"
BACKEND = "https://blahblah.com"

# login will take orgId, email and password and return auth cookie for the user
def login(email, password):
    url = 'https://auth-v2.blahblah.com/auth/v1.0/login'
    data = json.dumps({'email':email, 'password': password})
    r = requests.post(url,data=data,allow_redirects=False)
    cookieHeaders = filter(lambda x: x.lower()=='set-cookie',r.headers.keys())
    if len(cookieHeaders)==0:
        return None
    bc = Cookie.BaseCookie(r.headers[cookieHeaders[0]])
    sess = 'sess='+bc.values()[0].value
    return sess

但是我不能正确地将其翻译成python3。在

我只需要从头中设置Cookie值,但是filter函数或lambda的工作方式与python2中的不同。在

看起来Python2中的filter()函数返回一个filter对象,然后len()检查和“bc=”行也失败。在

如何正确访问cookie值?在


Tags: importauthjsondatareturnemailcookielogin
3条回答

python2中的行为与Python3中的行为略有不同。在

在Python 2中,以下操作很好:

foo = [1,2,3,4,5]
len(filter(lambda x: x>2, foo))

这是因为type(filter(lambda x: x>2, foo))list。在

而在python3中,您需要一个list构造函数:

^{pr2}$

实际上,在Python中,3type(filter(lambda x: x>2, foo))就是<class 'filter'>。在

尝试使用请求模块和请求。会话对象 Quick StartSessions

Refer this stackoverflow question for more detail

import requests
s = requests.Session()
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get('http://httpbin.org/cookies')
print(r.text)
# '{"cookies": {"sessioncookie": "123456789"}}'

print(s.cookies)
# RequestsCookieJar[Cookie(version=0, name='sessioncookie', value='123456789', port=None, port_specified=False, domain='httpbin.org', domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={}, rfc2109=False)]

您可以尝试内置cookie功能:

import requests

def login(email, password):
    url = 'https://wordpress.com/'
    data = {'email': email, 'password': password}
    r = requests.post(url, json=data, allow_redirects=False)

    print(r.cookies)
    print(r.cookies.get_dict())
    print(r.cookies.get_dict(domain='wordpress.com'))

    sess = 'sess={}'.format(r.cookies.get_dict()['wp_locale_test_group'])
    print(sess)
    return sess

将产生:

^{pr2}$

^{3}$

═══

print(r.cookies.get_dict())

{'SSE_blogger_ecommerce_20181217': 'test-a', 'tk_ai': 'ZCGvpAX2VOVR5RO11DPzA1dm', 'wp_locale_test_group': 'jan-2019'}

═══

print(r.cookies.get_dict(domain='wordpress.com'))

{'wp_locale_test_group': 'jan-2019'}

═══

print(sess)

sess=jan-2019

相关问题 更多 >