前言

当我们进行某项数据采集的时候,有时会让我们进行登录,那我们要怎样去解决这个问题呢?为了不让我们爬取这些数据,又采取了怎么样的反爬措施呢?下面就让我们带着这些问题去一探究竟。

Cookie反爬策略

Cookie一般是登录后产生(post),用来保持登录状态的,一般登录一次,下一次访问该网站下的其他网址时就不需要登录了,这就是由于cookie的作用,cookie就是给无状态的HTTP/HTTPS协议添加了一种保持之前状态的功能,这样下次处理信息的时候就不用重新获取信息了。
cookie还可以来判断是否是爬虫程序,因为一般的爬虫程序中并不会携带cookie,有些比较严格的网站,不登录也需要携带cookie访问,也就是说cookie的应用场景并不仅仅只有登录后才需要。
简而言之:Cookie中携带者你的登录信息,如果有登录过后的Cookie,我们就可以带着Cookie进入到任何页面。
适用场景: 数据采集的时候,需要绕过登陆,然后进入到这个页面。

cookie的获取:

刚进入学习爬虫的阶段我们通常在网页中查看Cookie。并将它复制到我们的请求头上。后续在requests模块时我们在详细的去了解Cookie。

python爬虫从0到1 -urllib_Cookie登录_开发语言


Cookie后面还有一个参数是referer 它的作用是判断当前路径是否是由上一个路径进来的,一般情况下它通常作为图片的防盗链。在我们抓取图片时会用到,也是放在请求头(headers)里。

实战演练

import urllib.request

url = 'https://user.qzone.qq.com/2544722208/infocenter'

headers = {

'cookie':'2544722208_todaycount=1; 2544722208_totalcount=15774; x-stgw-ssl-info=d77e0f85bd2a3c80332bbaf888749af6|0.106|-|30|.|I|TLSv1.2|ECDHE-RSA-AES128-GCM-SHA256|43000|h2|0; RK=1WeFLywUfw; ptcz=043b1188d90ebd229b178aba059ee3846ff7cb21cc1d1778000c19164a1a8949; Loading=Yes; qz_screen=1536x864; pgv_pvid=1824070179; QZ_FE_WEBP_SUPPORT=1; cpu_performance_v8=1; __Q_w_s_hat_seed=1; uin=o2544722208; skey=@Cps9Z8GqJ; p_uin=o2544722208; pt4_token=mGzJtuFZyp22h079Lsd1e2F5ugHERfLYxzxBm1uHgDA_; p_skey=FjeQHpwb9SIkXZpW77cTtzXqdwo6EMpV3GxWAY4t5pE_; pgv_info=ssid=s8342288258',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3880.400 QQBrowser/10.8.4554.400'
}

request = urllib.request.Request(url = url , headers = headers )

response = urllib.request.urlopen(request)

content = response.read().decode('utf-8')

with open('qqzone.html','w' ,encoding='utf-8')as fp:
fp.write(content)

这是UA反爬之外的Cookie反爬策略。我们就用这种方式去反反爬策略。如有不足,欢迎在评论区补充哦!