请求延迟产生的__cfduid参数和cf_clearance参数解决思路

网址:

https://www.ixian.cn/thread-1703333-1-1.html

抓包之后,数据逻辑分析如下:

请求延迟产生的__cfduid参数和cf_clearance参数解决思路_第1张图片

数据在这个请求当中,需要的参数值:jschl_answer,jschl_vc,pass,r,

其中jschl_vc,pass,r,三个参数在第一个503请求中有返回,直接拿来用即可。

请求延迟产生的__cfduid参数和cf_clearance参数解决思路_第2张图片

然后剩余一个参数:jschl_answer

请求延迟产生的__cfduid参数和cf_clearance参数解决思路_第3张图片

可以看到这个a的值即为这个参数的值。

将这个a的值拿出来使用,代码如下:

pattern = re.compile('setTimeout\(function\(\)\{(.*?)f.action \+= location.hash;', re.S)
code = pattern.findall(resp.text)
code = re.sub('\s+(t = document.*?);\s+;', '', code[0], flags=re.S)
code = re.sub('a.value', 'value', code)
code = re.sub('t.length', '12', code)
code = 'function test(){' + code.strip() + ';return value;}'
s1 = execjs.compile(code)
t = s1.call('test')
然后观察cookie的变化。

数据所在页的cookie,关键参数是__cfduid, 在第一次503的get请求中有产生,我们可以直接获取,然后携带参数和cookie进行请求即可。

注意:

当你请求的时候发现还是报503, 这个时候需要在参数生成之后,休息一下下,然后就可以拿回正确的值了。

 

你可能感兴趣的:(爬虫)