中国采购招标网爬虫采集破解

中国采购招标网

URL ,通过爬虫去请求该网站会返回521状态码,需要带着特定cookie去访问,此cookie又是动态变化,如果想要持续采集就得破解此cookie生成规则。

站点反爬分析

通过Fiddler抓包分析,可以看出它的请求顺序。

1. 首次发起请求,返回状态码为521,返回第一段加密cookie,携带第一段加密的cookie去请求会返回第二个521状态码,会返回第二段加密cookie,然后携带第一段和第二段cookie去请求页面,才返回正常状态码,通过观察第二段加密cookie有时效性,一会就过期,破解步骤见下面。

原始请求
原始请求

2. 第一段加密cookie具体内容:整个script中包含两部分内容,(1):通过js生成的第一段加密cookie;(2):第二个加密cookie页面的跳转,这部分破解比较简单,借助python的execjs包去模拟执行js,然后返回加密cookie即可。

获取请求的set_cookie,返回内容为:__jsluid_h=7cad7d7e20bf090ce259b49c85542372(此参数在后续请求均需携带);执行js返回的document.cookie内容:__jsl_clearance=1603345157.389|-1|HI%2B0JxwfexVK0OVf0WEG4FxNW3A%3D,一开始以为这就是破解成功的cookie,谁知道注意观察后返回200状态码的请求cookie格式为:XXX|0|XXXX 而此次请求返回中间部分为-1,只有请求第二个加密js后才能获取正确cookie。

第一段加密cookie
第一段加密cookie

代码片段:

def first_cookie_decode(base_url):
    """
    破解首次加密
    :param base_url: 原始请求URL
    :return: 浏览器请求头,首次破解加密字段一
    """
    response = requests.get(base_url, headers=HEADERS, timeout=(8, 8))
    if response.status_code == 521:
        cookies = response.cookies
        str_js_cookie = response.text.replace("<script>document.", "").replace(
            ";location.href=location.pathname+location.search</script>", "")
        print("0. 待破解字段==>", str_js_cookie)  # 替换掉页面跳转部分JS
        # 获取加密字段内容
        js_result = execjs.eval(str_js_cookie).split(";")[0]  # 执行加密JS
        print("1. 待破解加密字段一==>", js_result)
        cookies_text = ';'.join(['='.join(item) for item in cookies.items()])
        print("2. 加密字段一==>", cookies_text)  # 此字段可连续使用
        HEADERS['cookie'] = cookies_text + "; " 
  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值