Contents

之前写了一个小脚本,监控网站帖子变化。最近由于这个论坛被CC了,加了360网站宝的防护。导致脚本失效了。所以花了一点时间看了下360网站宝的防CC策略。

除了对访问频率的限制,还通过set-cookie设置了一些cookie。通过检查cookie的
有效性来决定是否可以访问。

当没有cookie的访问的时候,是来到一个设置cookie的中间页面。

拿到有效的cookie再次访问,才会真正的获得内容。而且cookie是存在有效时间的。获得一个cookie放到脚本里的思路也是不行的。

所以需要脚本模拟浏览器解析setcookie的设置,根据服务器返回的setcookie头设置cookie,再去请求内容。这个需求使用requests库的session对象,可以方便的实现。

http://docs.python-requests.org/zh_CN/latest/user/advanced.html

s = requests.Session()

s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get("http://httpbin.org/cookies")

print(r.text)
# '{"cookies": {"sessioncookie": "123456789"}}'

360网站宝设置了BuJ82132开头的多个cookie。

Contents