爬虫小白-如何辨别是否有cookie反爬案例

目录

      • 一、Cookie介绍
      • 二、cookie生成来源区分查找
      • 三、如何判断是否有cookie反爬
      • 四、来自服务器生成的cookie反爬解决方法
      • 五、来自js生成的cookie反爬解决方法

一、Cookie介绍

  • 先推荐该篇文章简单了解Cookie、Session、Token、JWT
  • 1、cookie的类型:会话cookie和持久cookie;其唯一的区别在于过期时间,如果设置了Discard参数,或者没有设置Expires或Max-Age参数来说明扩展的过期时间,这个cookie就是一个会话cookie
  • 2、会话cookie:是一种临时的cookie,它记录了用户访问站点时的设置和偏好,用户退出浏览器时,会话cookie就被删除了。
  • 3、 持久cookie的生存时间更长一些,它们存储在硬盘上,浏览器退出,计算机重启时它们仍然存在。通常用持久cookie维护某个用户会周期性访问的配置文件或登录名。

爬虫小白-如何辨别是否有cookie反爬案例_第1张图片

二、cookie生成来源区分查找

  • 1、cookie参数一般是通过两种方式生成,一种是服务端返回的cookie,另一种是网页端有javascript代码生成的cookie
  • 2、首先将打开谷歌开发者工具(一般按F12即可打开),清除掉网页缓存的cookie参数以及其他的参数,一般我们选择一个Clear Storage即可
    爬虫小白-如何辨别是否有cookie反爬案例_第2张图片
    爬虫小白-如何辨别是否有cookie反爬案例_第3张图片
  • 3、清掉缓存后,再刷新网页,同样在谷歌开发者工具Application的位置查看是否有HttpOnly属性,或者是第一个请求的响应头里面的Set-Cookie , 测试网站
    爬虫小白-如何辨别是否有cookie反爬案例_第4张图片
    爬虫小白-如何辨别是否有cookie反爬案例_第5张图片

三、如何判断是否有cookie反爬

  • 删掉cookie,重放请求,看是否还能和之前一样请求到一样的响应数据内容,如果能,则没有cookie反爬,如果不能,则有cookie反爬
  • 如何确定cookie哪个参数是反爬的关键,测试法,多个键值对一个一个删,看谁影响到了,具体的看b站视频十一姐时一介绍讲解
  • 测试:通过重放请求与删除单个cookie测试
    爬虫小白-如何辨别是否有cookie反爬案例_第6张图片
    爬虫小白-如何辨别是否有cookie反爬案例_第7张图片

四、来自服务器生成的cookie反爬解决方法

  • 1、来自服务器生成的cookie,一般我们不用管,只需要请求对应的链接即可,可以直接用会话session保持,比如requests里面的session

  • 2、案例一,szxx_session的cookie反爬 , 以及请求头参数X-Csrf-Token反爬
    爬虫小白-如何辨别是否有cookie反爬案例_第8张图片

    # -*- coding: utf-8 -*-            
    # @Time : 2023-07-23
    # @Author: sy
    # @公众号: 逆向OneByOne
    # @url: http://www.zjmazhang.gov.cn/hdjlpt/published?via=pc
    import urllib3
    import re
    from loguru import logger
    import requests
    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
    
    
    def _requests(url, data=None):
        if data:
            res = ses.post(url, headers=headers, data=data, timeout=10)
        else:
            res = ses.get(url, headers=headers, timeout=10)
        logger.info(f">>>requests {url}")
        logger.success(f">>>status_code 【{res.status_code}】 res.cookies {res.cookies} ses.cookies {ses.cookies}")
        if res.status_code in [521, 412, 202, 200]:
            return res
    
    
    def page(token):
        post_url = "http://www.zjmazhang.gov.cn/hdjlpt/letter/pubList"
        form_data = {
            "offset": "0",
            "limit": "20",
            "site_id": "759010"
        }
        headers.update({"X-Csrf-Token": token})
        resp = _requests(post_url, form_data)
        print(resp.text)
        print("请问麻章区办理居住证需要满足什么条件?" in resp.text)
    
    
    def index():
        index_url = "http://www.zjmazhang.gov.cn/hdjlpt/published?via=pc"
        resp = _requests(index_url)
        print("请问麻章区办理居住证需要满足什么条件?" in resp.text)
        xsrf_token = re.search(r"var _CSRF = '(.*?)';",resp.text).group(1)
        return xsrf_token
    
    
    ses = requests.session()
    headers = {
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
        "Accept-Encoding": "gzip, deflate",
        "Accept-Language": "zh-CN,zh;q=0.9",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36"
    }
    _token = index()
    page(_token)
    

五、来自js生成的cookie反爬解决方法

  • 1、来自js生成的cookie需要解密研究,可以通过hook-cookie的方式定位,cookie生成位置,然后回溯生成逻辑过程
    (function() {
       'use strict';
        var _cookie = ""; // hook cookie
        Object.defineProperty(document, 'cookie', {
            set: function(val) {
                console.log('cookie set->', new Date().getTime(), val);
                debugger;
                _cookie = val;
                return val;
            },
            get: function() {
                return _cookie;
            }
       });
    })()
    
  • 正在找案例中,本次不讲

你可能感兴趣的:(python爬虫逆向案例初级,爬虫,cookie反爬)