侧边栏壁纸
博主头像
七哥的技术博客

You got a dream, you gotta to protect it!

  • 累计撰写 85 篇文章
  • 累计创建 76 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

python在302重定向后的cookie发送

admin
2025-02-27 / 0 评论 / 0 点赞 / 12 阅读 / 0 字

使用 python 的 requests.get 发起请求的时候,中间请求进行了 302 跳转

在发起请求的时候,是设置了 cookie 的,第一个请求携带了 cookie,但是 302 跳转后的请求却没有携带 cookie,导致 500 失败了

这里请求的是 https ,设置了 wireshark 抓包,可以参考 这里 ,在 mitmproxy 中也是可以查看报文的

第一次发起的请求携带了 cookie,可以正常响应 302,并返回了 Location 地址

重定向到 Location 地址后,cookie 并不会携带,导致请求失败

请求的代码如下,使用的是 get 参数的默认值 allow_redirects = True 自动处理重定向

useragent = "..."
cookie = "..."
referer = "..."

def HttpGet(url, referer):
    headers = {
            'user-agent'               : useragent,
            'cookie'                   : cookie,
            'referer'                  : referer
        }

    proxies = {
        'http': 'http://127.0.0.1:8080',
        'https': 'http://127.0.0.1:8080'
    }
    response = requests.get(url, proxies=proxies, headers=headers, verify=False)
    print("resp code:", response.status_code)

修改为禁止重定向,并手动发起重定向后的请求,参考代码如下,修改后就可以在重定向后的请求中携带 cookie 了

useragent = "..."
cookie = "..."
referer = "..."

def HttpGet(url, referer):
    headers = {
            'user-agent'               : useragent,
            'cookie'                   : cookie,
            'referer'                  : referer
        }

    proxies = {
        'http': 'http://127.0.0.1:8080',
        'https': 'http://127.0.0.1:8080'
    }

    realUrl = url
    response = None
    while True:
        if response != None:
            location = response.headers.get("Location")
            if location == None:
                break
            realUrl = url + location

        response = requests.get(realUrl, proxies=proxies, headers=headers, verify=False, allow_redirects=False)
        print("resp code:", response.status_code)


0

评论区