爬虫逆向之 Cookie 加密详解

目录

《爬虫逆向之 Cookie 加密详解》

一、Cookie 加密的重要性

二、常见的 Cookie 类型

(一)静态 Cookie

(二)时效性 Cookie(sit cookie)

(三)加速乐类型(三次加载)

(四)JS 赋值的 Cookie

三、以同花顺为例的 Cookie 处理方法

(一)定位 Cookie

(二)快速定位 Cookie 的方法


在爬虫逆向的过程中,Cookie 的加密处理是一个常见的难题。本文将根据视频内容,详细介绍 Cookie 的几种常见类型及处理方法,并结合代码进行讲解。

一、Cookie 加密的重要性

在编写爬虫时,我们可能会遇到这样的情况:昨天还能正常运行的爬虫,今天却突然运行失败了。这往往与 Cookie 有关。不同类型的网站可能会采用不同的 Cookie 处理方式,对爬虫进行反爬。因此,了解 Cookie 的加密方式对于成功编写爬虫至关重要。

二、常见的 Cookie 类型

(一)静态 Cookie

静态 Cookie 一般由静态页面构成。当我们请求网页的静态接口时,它会返回一段 JS 代码,并提示我们没有启动 JS 环境。这种 Cookie 比较好处理。

(二)时效性 Cookie(sit cookie)

  1. 特点:由二次加载构成,也被称为时效性 Cookie。例如同花顺问财神、雪球网、前程无忧、智联招聘、诸葛找房等网站都采用了这种 Cookie。
  2. 处理过程:
    • 第一次请求页面地址时,会获得一段 JS 代码,并由服务器返回一个 cookie1 的值。同时,这段 JS 代码用于生成 cookie 的一个值。
    • 第二次请求时,会携带第一次请求生成的 cookie 和服务器返回的 cookie,总共两个 cookie。

(三)加速乐类型(三次加载)

加速乐会做三次加载,与时效性 Cookie 有所区别。

(四)JS 赋值的 Cookie

以同花顺为例,它直接在 JS 代码当中生成一个 cookie,然后赋值给 document.cookie

三、以同花顺为例的 Cookie 处理方法

(一)定位 Cookie

  1. 打开同花顺问财神网站(以 EDGE 浏览器为例)。
  2. 右键点击检查,打开监听工具。
  3. 在监听工具中选择 xhr(动态数据结构)。
  4. 点击搜索,下方会返回一个数据接口,其中包含所需数据。
  5. 观察 Cookie 中是否有特定的值,如 “V” 值。

(二)快速定位 Cookie 的方法

  1. 进入源代码页面。
  2. 在源代码页面的左边,选择 “片段”。
  3. 在下方进行进一步操作(视频中未详细说明具体操作方法)。

以下是一个简单的代码示例(仅为示意,实际情况可能需要更多的处理):

// 模拟第一次请求获取 JS 代码和 cookie1
function firstRequest() {
    // 这里假设使用 fetch 进行请求
    return fetch('https://example.com')
       .then(response => {
            const cookie1 = response.headers.get('Set-Cookie');
            const jsCode = response.text();
            return { cookie1, jsCode };
        });
}

// 使用第一次请求获取的 JS 代码生成 cookie2
function generateCookie2(jsCode) {
    // 这里需要根据具体的 JS 代码进行解析和处理
    // 假设通过执行 JS 代码在全局环境中生成了 cookie2
    eval(jsCode);
    return document.cookie.split(';').find(cookie => cookie.startsWith('cookie2='))?.split('=')[1];
}

// 第二次请求携带两个 cookie
function secondRequest(cookie1, cookie2) {
    return fetch('https://example.com/secondEndpoint', {
        headers: {
            Cookie: `${cookie1}; cookie2=${cookie2}`
        }
    });
}

firstRequest()
   .then(({ cookie1, jsCode }) => generateCookie2(jsCode))
   .then(cookie2 => secondRequest(cookie1, cookie2))
   .then(response => console.log(response))
   .catch(error => console.error(error));

请注意,以上代码仅为示例,实际应用中需要根据具体的网站情况进行调整和优化。在进行爬虫开发时,还需要遵守法律法规和网站的使用条款,避免非法爬取数据。

希望本文能帮助你更好地理解和处理 Cookie 加密问题,在爬虫逆向的道路上更加顺利。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值