Python爬虫—破解JS加密的Cookie

前言

在进行网站数据爬取时,很多网站会使用JS加密来保护Cookie的安全性,而为了防止被网站反爬虫机制识别出来,我们通常需要使用代理IP来隐藏我们的真实IP地址。

 

本篇文章将介绍如何结合代理IP破解JS加密的Cookie,主要包括以下几个方面:

  • 什么是Cookie
  • 什么是JS加密的Cookie
  • 什么是代理IP
  • 破解JS加密的Cookie的方法及实现
  • 如何使用代理IP进行网站数据爬取

首先,我们来了解一下什么是Cookie。

1. 什么是Cookie

Cookie是服务器向客户端发送的一小段数据,客户端将其存储在本地,下次请求时会将这个数据发送给服务器,用于识别用户身份、保存用户设置等。

我们可以通过浏览器的开发者工具查看网站的Cookie信息。

在Chrome浏览器中,可以通过F12进入开发者工具,在Application选项卡下的Cookies中查看网站的Cookie信息。

2. 什么是JS加密的Cookie

为了增强Cookie的安全性,很多网站会使用JS加密来保护Cookie。JS加密的原理是在服务器端生成一个密钥,并将其传递给客户端,客户端将原始Cookie值使用密钥进行加密后发送给服务器,服务器接收到加密的Cookie值后使用密钥进行解密。

这样,即使Cookie被截获,也无法被恶意用户轻易地解密。

下面是一个使用JS加密的Cookie的例子:

function encryptCookie(value, secretKey) {return CryptoJS.AES.encrypt(value, secretKey).toString();
}
var secretKey = 'a2V5c29uYWx1ZQ==';
var value = 'username=JohnDoe';
document.cookie = 'auth=' + encryptCookie(value, secretKey);

在上面的代码中,encryptCookie函数使用CryptoJS库对原始Cookie值进行AES加密,而secretKey是在服务器端生成的密钥。

3. 什么是代理IP

代理IP是一个位于我们计算机和互联网之间的中间人,我们通过代理服务器发送请求,代理服务器再将请求发送给目标服务器,从而隐藏我们的真实IP地址和位置。

使用代理IP可以有效地防止网站反爬虫机制对我们进行识别和封禁,从而提高我们的爬取成功率。

4. 破解JS加密的Cookie的方法及实现

破解JS加密的Cookie的方法有很多种,这里我们介绍一种比较简单的方法。

首先,我们需要找到网站使用的JS加密算法及密钥。我们可以通过查看网站源码或者使用浏览器的开发者工具来获取这些信息。

下面是一个使用CryptoJS库进行AES加密的例子:

function encrypt(value, key) {return CryptoJS.AES.encrypt(value, key).toString();
}
var key = 'a2V5c29uYWx1ZQ==';
var value = 'username=JohnDoe';
document.cookie = 'auth=' + encrypt(value, key);

在上面的代码中,key就是服务器端生成的密钥,我们可以将其复制下来。

接着,我们需要写一个脚本来破解加密的Cookie。具体实现如下:

import requests
import re
import base64
from Crypto.Cipher import AES# 构造请求头和代理IP
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
proxies = {'http': 'http://username:password@ip:port','https': 'http://username:password@ip:port'}# 发送请求
url = 'http://example.com'
response = requests.get(url, headers=headers, proxies=proxies)# 获取密钥和加密后的Cookie值
pattern = re.compile('var key = \'(.*?)\';.*?document.cookie = \'auth=(.*?)\';', re.S)
result = re.search(pattern, response.text)
key = base64.b64decode(result.group(1))
cipher_text = base64.b64decode(result.group(2))# 解密Cookie值
cipher = AES.new(key, AES.MODE_ECB)
plain_text = cipher.decrypt(cipher_text).decode('utf-8').rstrip('\0')# 输出解密后的Cookie值
print(plain_text)

在上面的代码中,我们首先构造了请求头和代理IP,然后发送一个GET请求获取网站源码,使用正则表达式获取密钥和加密后的Cookie值。接着,我们使用base64库对密钥和加密后的Cookie值进行解码,再使用Crypto库的AES模块进行解密。

最后,我们将解密后的Cookie值输出即可。

需要注意的是,由于JS加密的Cookie的安全性比较高,因此破解的成功率较低,需要根据具体情况进行调整。同时,破解JS加密的Cookie也会涉及到一些法律问题,我们需要在遵守法律的前提下进行破解。

5. 如何使用代理IP进行网站数据爬取

使用代理IP可以有效地防止网站反爬虫机制对我们进行识别和封禁,但同时也会带来一些问题,比如代理IP的稳定性和质量等。

在使用代理IP进行网站数据爬取时,我们需要注意以下几点:

  1. 选择稳定的代理IP供应商,确保代理IP的质量和稳定性。
  2. 对代理IP进行定期检测,以确保代理IP的可用性。
  3. 避免频繁地使用同一个代理IP,以免被目标网站识别出来。
  4. 如需使用多个代理IP,可以使用代理IP池来管理代理IP,定时删除不可用的代理IP并添加新的代理IP。

下面是一个使用代理IP进行网站数据爬取的例子:

import requests# 构造请求头和代理IP
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
proxies = {'http': 'http://username:password@ip:port','https': 'http://username:password@ip:port'}# 发送请求
url = 'http://example.com'
response = requests.get(url, headers=headers, proxies=proxies)# 解析返回的数据
data = response.text

在上面的代码中,我们首先构造了请求头和代理IP,然后发送一个GET请求获取网站数据。需要注意的是,调用requests库时需要指定proxies参数,将代理IP加入到请求中。

最后,我们可以解析返回的数据并做相应的处理。

总结

本篇文章介绍了如何结合代理IP破解JS加密的Cookie和如何使用代理IP进行网站数据爬取,希望对大家有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/20220.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

银河麒麟V10 QtCreator安装配置说明(断网离线)

文章目录 1.安装要求:2.安装Qt1.安装要求: 拥有Qt软件安装包qt5.12-arm链接:https://pan.baidu.com/s/1FJerT6SckfjABxAn60rsrA?pwd=mfi6 提取码:mfi6 2.安装Qt 1)拷贝Qt软件包qt5.12-arm至系统/home/kylin/桌面 2)安装Qt软件包 cd /home/kylin/qt5.12-arm/桌面 su…

Flutter:gsy_flutter_demo项目学习——布局切换动画、列表滑动监听、列表滑动到指定位置、高斯模糊

前言 gsy_flutter_demo是一个关于各种小案例和小问题的方案解决。项目是由flutter大佬恋猫de小郭维护的 项目地址:https://github.com/CarGuo/gsy_flutter_demo 感兴趣的可以看一下大佬的文章:Flutter完整开发实战详解系列,GSY Flutter 系…

非凸科技受邀参加中科大线上量化分享

7月30日,非凸科技受邀参加由中国科学技术大学管理学院学生会、超级量化共同组织的“打开量化私募的黑箱”线上活动,分享量化前沿以及求职经验,助力同学们拿到心仪的offer。 活动上,非凸科技量化策略负责人陆一洲从多个角度分享了如…

485modbus转profinet网关连三菱变频器modbus通讯触摸屏监控

本案例介绍了如何通过485modbus转profinet网关连接威纶通与三菱变频器进行modbus通讯。485modbus转profinet网关提供了可靠的连接方式,使用户能够轻松地将不同类型的设备连接到同一网络中。通过使用这种网关,用户可以有效地管理和监控设备,从…

【华秋干货铺】PCB布线技巧升级:高速信号篇

如下表所示,接口信号能工作在8Gbps及以上速率,由于速率很高,PCB布线设计要求会更严格,在前几篇关于PCB布线内容的基础上,还需要根据本篇内容的要求来进行PCB布线设计。 高速信号布线时尽量少打孔换层,换层优…

vue 3.0 + element-ui MessageBox弹出框的 让文本框显示文字 placeholder

inputPlaceholder:请填写理由, 方法实现如下: this.$prompt(, 是否确认?, { confirmButtonText: 确定, cancelButtonText: 取消, inputPlaceholder:请填写理由, }).then(({ value }) > { if(value null || value ""){ Message({message: 请填…

卷积神经网络【图解CNN】

文章目录 1.卷积运算2.池化3.全连接层 卷积神经网络可以看作一个函数或者黑箱,输入就是图片的像素阵列,输出就是这个图片是什么? 图片是X,那么就输出‘x’,图片是‘O’,那么就输出O; 在计算机眼中&#xff…

如何制作VR全景地图,VR全景地图可以用在哪些领域?

引言: 随着科技的迅速进步,虚拟现实(VR)技术正逐渐渗透到各个领域。VR全景地图作为其中的重要应用之一,为人们提供了身临其境的全新体验。 一.什么是VR全景地图? VR全景地图是一种利用虚拟现实技术&…

怎样做好字幕翻译服务?

我们知道,字幕泛指影视作品后期加工的文字,往往显示在电视、电影、舞台作品中。字幕翻译就是将外国影片配上本国字幕或者是将本国影片配上外国字幕。那么,字幕翻译的主要流程是什么,怎样做好字幕翻译服务? 据了解&…

企业既要用u盘又要防止u盘泄密怎么办?

企业在日常生产生活过程中,使用u盘交换数据是最企业最常用也是最便携的方式,但是在使用u盘的同时,也给企业的数据保密工作带来了很大的挑战,往往很多情况下企业的是通过u盘进行数据泄漏的。很多企业采用一刀切的方式,直…

【Kubernetes】

目录 一、Kubernetes 概述1、K8S 是什么?2、为什么要用 K8S?3、Kubernetes 集群架构与组件 二、核心组件1、Master 组件2、Node 组件3、K8S创建Pod的工作流程?(重点)4、K8S资源对象(重点)5、Kubernetes 核…

iOS数字转为图片

根据数字,转成对应的图片 - (void)viewDidLoad {[super viewDidLoad];[self testNum2String:10086]; }/// 根据数字,显示对应的图片 数字用特定的图片显示 - (void)testNum2String:(NSInteger)num {UIView *numContentView [[UIView alloc] initWithFr…

【外卖系统】套餐管理

新增套餐 需求分析 后台可以管理套餐信息,通过新增套餐功能来添加一个新的套餐,在添加套餐时需要选择当前套餐所属的套餐分类和包含的菜品,并需要上传套餐对应的图片。 页面发送ajax请求,请求服务端获取套餐分类数据并展示到下…

最细致讲解yolov8模型推理完整代码--(前处理,后处理)

研究yolov8时,一直苦寻不到Yolov8完整的模型推理代码演示,大部分人都是基于Yolo已经封装好的函数调用,这个网上教程很多,本文就不赘述这方面的内容了,接下来将细致全面的讲解yolov8模型推理代码,也就是yolo…

卡片的点击事件通过点击进行路由传参

下面是详情页 通过 接收 <template><div class"detail"><img :src"row.imgUrl"><van-icon name"arrow-left" click"back" /></div> </template><script> export default {created() {let …

LeetCode每日一题Day4——26. 删除有序数组中的重复项

✨博主&#xff1a;命运之光 &#x1f984;专栏&#xff1a;算法修炼之练气篇&#xff08;C\C版&#xff09; &#x1f353;专栏&#xff1a;算法修炼之筑基篇&#xff08;C\C版&#xff09; &#x1f433;专栏&#xff1a;算法修炼之练气篇&#xff08;Python版&#xff09; …

【分布式任务调度平台 XXL-JOB 急速入门】从零开始将 XXL-JOB 接入到自己的项目

&#x1f4a7; 分布式任务调度平台 X X L − J O B 急速入门&#xff1a;从零开始将 X X L − J O B 接入到自己的项目 \color{#FF1493}{分布式任务调度平台 XXL-JOB 急速入门&#xff1a;从零开始将 XXL-JOB 接入到自己的项目} 分布式任务调度平台XXL−JOB急速入门&#xff1a…

增强知识保护和知识管理:PDM系统的知识库特色

在现代竞争激烈的商业环境中&#xff0c;知识保护和知识管理对企业的发展至关重要。PDM系统&#xff08;Product Data Management&#xff0c;产品数据管理&#xff09;作为一款强大的数字化工具&#xff0c;具备丰富的知识库特色&#xff0c;帮助企业增强知识保护和知识管理的…

《TCP IP 网络编程》第十五章

第 15 章 套接字和标准I/O 15.1 标准 I/O 的优点 标准 I/O 函数的两个优点&#xff1a; 除了使用 read 和 write 函数收发数据外&#xff0c;还能使用标准 I/O 函数收发数据。下面是标准 I/O 函数的两个优点&#xff1a; 标准 I/O 函数具有良好的移植性标准 I/O 函数可以利用…

FPGA学习——蜂鸣器实现音乐播放器并播放两只老虎

文章目录 一、蜂鸣器简介1.1 蜂鸣器分类1.2 PWM 二、C4开发板原理图三、如何产生不同的音调四、代码实现及分析五、总结 一、蜂鸣器简介 1.1 蜂鸣器分类 蜂鸣器一般分为有源蜂鸣器和无源蜂鸣器。二者的区别在于&#xff0c;有源蜂鸣器内部含有振动源和功放电路&#xff0c;只…