如何获取获取302 重定向页面的cookie

发布于 2022-09-06 06:55:40 字数 732 浏览 21 评论 0

最近在做网站seo数据的统计,我需要从百度统计那里抓取信息存入我的数据。

我选择PHP + Guzzle6 帮我完成这项工作。

但是实现的功能出了一些问题。我使用的是百度的一个胖URL,在地址框里输入url。

类似这种:https://tongji.baidu.com/web/welcome/ico?s=sdfsdfsfdsfsdfsfsfsdfsf

然后输入密码就好了,经过分析,这个属于form-data范畴。

随后,登入成功了,会做个302跳转,

clipboard.png

现在我想获取跳转后的cookie值,然而实操我获取不到。

我的做法:

  1. 获取首次访问胖url的cookie
  2. 将上一步的cookie,passwd等参数再次传给胖url,获取登录成功后的页面(即302跳转页面)cookie值
  3. 带着这个cookie去访问跳转后的页面,拉取统计数据。

但是,我对于重定向cookie的获取一筹莫展,google了一些,比如说跟着重定向,设置header值,都没有成功。

我的问题:

我需要获取重定向cookie的思路,大家能帮忙吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

软糯酥胸 2022-09-13 06:55:40

从截图来看,这个cookie属于请求头request的cookie,使用浏览器的debug工具追踪一下在哪里相应了这个cookie的吧,这样才能拿到cookie

翻身的咸鱼 2022-09-13 06:55:40

selenium试过吗

自我难过 2022-09-13 06:55:40

guzzle 自身的重定向功能好像不支持携带cookie,需要手动来进行redirect 跳转。
1.关闭allow_redirects (关闭字段重定向)
2.判断$response 是否是302
3.如果是重定向
4.则请求这个回调函数

    public function callback($redirect, $cookie)
    {
        $client = new Client();
        $response = $client->request('GET', $redirect, [
            'headers' => [
                'Cookie' => $cookie,
            ],
            'allow_redirects' => false
        ]);
        if ($response->getStatusCode() === 302) {
            $redirect = $response->getHeaderLine('Location');
            $cookie = $response->getHeaderLine('Set-Cookie') ?? $cookie;
            if (strpos($redirect, 'http') === false) {
                $redirect = self::$adminBaseLink . $redirect;
            }
            $cookie = $this->callback($redirect, $cookie);
        }
        $cookie = $response->getHeaderLine('Set-Cookie') ?? $cookie;
        return $cookie;
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文