该文章为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系作者删除~
目标网站:
aHR0cDovL3d3dy56am1hemhhbmcuZ292LmNuL2hkamxwdC9wdWJsaXNoZWQ/dmlhPXBj
抓包后可以看到请求头有这一个值
X-CSRF-TOKEN: mmyn0BB8axl4jzelKjByxI4M83KElTWG5WLBCQQN
翻页再次抓包后这个值还是一样的,但是清除了缓存后这个值是会变得
那么我们可以分析假设必须要带这个值才能访问成功
2种可能性
1、第一次访问首页 在cookie里面携带
2、第一次访问首页 在html里面携带
我们全局搜一下发现这个值是写死在html里面的,所以我们需要通过正则去提取这个值
经过测试,请求需要验证cookie的这个参数,那么这个我们可以通过python第一次访问首页,获取这个cookie的值。然后再后续的爬虫中携带上这个值就可以了
以下是python代码:
import re
import requests
def get_cookie():
url = 'http://www.zjmazhang.gov.cn/hdjlpt/published?via=pc'
res = requests.get(url)
szxx_session = res.cookies.get('szxx_session')
token = re.findall("var _CSRF = '(.*?)';",res.text)
print(szxx_session)
return szxx_session, token[0] if token else 'mmyn0BB8axl4jzelKjByxI4M83KElTWG5WLBCQQN'
def crawl():
session,token = get_cookie()
url = 'http://www.zjmazhang.gov.cn/hdjlpt/letter/pubList'
data = {
"offset": "0",
"limit": "20",
"site_id": "759010"
}
res = requests.post(url,
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
'X-CSRF-TOKEN': token,
'Cookie': 'szxx_session={}'.format(session)
},data=data)
print(res.text)
if __name__ == '__main__':
# get_cookie()
crawl()
欢迎联系作者交流更多