521cookie加密爬虫错误

在爬取某网站时遇到JS加密的Cookie问题,导致返回521错误。通过学习和尝试,使用execjs库解析和运行JS代码,经过多次请求和处理,成功获取解密后的Cookie,但依然无法在Scrapy中正常爬取。

521爬虫js加密cookie
之前两天遇到了某个网站,在进行爬虫爬取的过程中,遇到了js加密的cookie,在经过各种大神的破解访问熏陶之后,终于在今天成功破解,但是还是无法使用scrapy进行爬取
接下来进入正题···

<script>var x="1565774358@1500@search@Rh@charAt@@@chall...............................</script>

爬取某个网站的信息时,出现了这样的情况,当时还以为是cookie的原因,换了cookie之后,一次只能爬几条数据,还是会返回一个521错误,查看了返回的信息,发现这好像一个js代码,所以尝试着去网上搜了搜,发现优快云里不少这种问题的解决方案,拿来试了一试,发现并不像他们说的这样简单。
首先,我们需要导入python中一个第三方库,这个库是专门运行js代码的:pip install execjs
如果对这个库不了解的可以去

https://blog.youkuaiyun.com/xudailong_blog/article/details/81271302
这个篇博客去看下使用规则

这里直接介绍破解方法,首先我们得到的是一个script标签,我们需要将这个标签使用正则去将我们使用的内容解析出来

	re.findall('<script>(.*?)</script>',js)[0]   #得到的数据为一个列表,我们需要取下标
    js3 = js2.replace('eval','return ')   #因为需要将结果返回,所以需要将eval换成return
    content = execjs.compile(js3)   #这里使用execjs包的compile方法去将这个转换成execjs所能认知的js代码
    ff = content.call('f')   #这里调用这段js代码中的函数名
    # print(ff)
    ti
爬虫领域,Cookie(复数形态Cookies),中文名称为“小型文本文件”或“小甜饼”,指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密),定义于RFC2109,是网景公司的前雇员卢·蒙特利在1993年3月的发明 [^3]。 ### 作用 Cookie与Session经常协同合作,Cookie更像是信使,主要作用是帮助传递Session ID,而Session因为其安全性高、存储量大,信息位于服务器端等优势,通常被认为是真正的“记忆”所在处 [^1]。在爬虫中,使用Cookie可以实现免登录访问网站,绕过网站的登录验证机制,直接获取需要的数据 [^3]。 ### 使用方法 在Python爬虫中使用Cookie,首先要获取Cookie。可以手动从浏览器中获取,在浏览器登录网站后,通过开发者工具(如Chrome的开发者工具)找到相应网站的Cookie信息。获取到Cookie后,在代码里设置请求头,将Cookie添加到请求头中。以下是一个简单示例: ```python import requests # 设置请求头,包含User-Agent和Cookie headers = { 'User-Agent': r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0', 'Cookie': 'your_cookie_here' } # 发送请求 response = requests.get('https://example.com', headers=headers) # 打印响应内容 print(response.text) ``` 在这个示例里,将获取到的Cookie值替换 `'your_cookie_here'`,就可以带着Cookie向网站发送请求了 [^4]。 ### 设置方式 在Python的`requests`库中,可以通过`headers`参数来设置Cookie。如上述示例,在`headers`字典里添加`'Cookie'`键值对即可。此外,`requests`库还提供了`cookies`参数来设置Cookie,示例如下: ```python import requests # 创建一个Cookie字典 cookies = { 'name': 'value' } # 发送请求,设置Cookie response = requests.get('https://example.com', cookies=cookies) # 打印响应内容 print(response.text) ``` 在这个示例中,创建了一个包含Cookie信息的字典`cookies`,并通过`cookies`参数将其传递给`requests.get()`方法 [^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值