Python从响应中读取cookie?

2024-10-01 02:30:17 发布

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

在python中,我有:

cookies = dict(PHPSESSID='PHPSESSID=djsgkjhsdjkhj34',
               authchallenge='sdifhshdfiuh34234234',
               rishum='skdhfuihuisdhf-' + '10403111')

try:
    response = requests.get(url, headers=headers, cookies=cookies, allow_redirects=False)

但是我希望第一次只使用cookies值,然后使用服务器设置的新值,我怎么做

我找到的解决方案在第一次请求时不使用默认cookie

注意:我无法自动登录到该网站,因为它使用身份验证挑战,所以每次我手动登录并仅在第一次请求时更改这些cookie,然后当服务器更新它们时,我希望看到这会影响我当前的cookie


我的网站工作原理示例:

首先,我使用recaptcha登录,然后获取临时cookies

对于我应用程序中的第一个请求,我想使用这些临时cookie(已经知道了)

稍后,每个请求我都需要使用上一个响应中的cookies(它们随每个请求而变化)

我当前的代码:

def main():
    start_time = time.time()
    keep_running = True
    while keep_running:
        keep_running = execute_data()
        time.sleep(5.0 - ((time.time() - start_time) % 5.0))


def execute_data():
    url = 'https:me.happ.com/rishum/register/confirm'

    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'Accept-Language': 'en-US,en;q=0.5',
        'Accept-Encoding': 'gzip, deflate',
        'Connection': 'close'
    }

    cookies = dict(rishum='dsfsdf21312zxcasd-' + '39480523')

    try:
        response = requests.get(url, headers=headers, cookies=cookies, allow_redirects=False)

Tags: urlgettimecookieresponserequestsrunningdict
1条回答
网友
1楼 · 发布于 2024-10-01 02:30:17

您几乎已经获得了它,但在字典实现方面有点不太在行

这就是您正在寻找的:

cookies = {
    "PHPSESSID": "djsgkjhsdjkhj34",
    "authchallenge" : "sdifhshdfiuh34234234",
    "rishum": 'skdhfuihuisdhf-' + '10403111'
    }

try:
    response = requests.get(url, headers=headers, cookies=cookies, allow_redirects=False)

编辑:我现在知道这不是问题所在,但您希望在会话期间更新Cookie,下面是一个简单的示例,说明如何使用请求进行更新。会话

from requests import Session

s = Session()

s.cookies["foo"] = "bar"

r = s.get('https://google.com')

print("Before:")
for cookie in s.cookies:
    print(cookie)

print()

s.cookies["bo"] = "baz"
print("After: ")
for cookie in s.cookies:
    print(cookie)

编辑#2:

为了进一步回答您的问题,这里有一个更好的示例,说明如何在循环中更新cookie(如果需要,请全部更新)

from requests import Session, cookies

s = Session()

b = s.get('https://google.com')

for cookie in s.cookies:
    print(cookie.value)


# Iterate over cookies
for cookie in s.cookies:

    # You can see we already have this cookie's info in the $cookie variable so lets delete it from the cookie jar
    del s.cookies[cookie.name]
    
    # You can update the values HERE
    # ...
    # Example:
    cookieValue = cookie.value.upper()

    # Then save the new cookie to the cookie jar.
    updated_cookie = cookies.create_cookie(domain=cookie.domain,name=cookie.name,value=cookieValue)
    s.cookies.set_cookie(updated_cookie)

for cookie in s.cookies:
    print(cookie.value)

相关问题 更多 >