当前位置: 首页 > news >正文

爬虫之Cookie获取:利用浏览器模拟一个cookie出来、面对反爬虫、加密的cookie的应对方法

爬虫之Cookie获取:利用浏览器模拟一个cookie出来、面对反爬虫、加密的cookie的应对方法

  • 在爬虫或模拟请求时,特别是获取验证码的时候,反爬虫的网站的cookie或定期失效,复制出来使用是不行的
  • 为了应对这种方式,我们可能就需要像浏览器打开网站一样,取得它信任的cookie
  • selenium就是一个很好的手段

一、什么是selenium

  • Selenium最初是一个自动化测试工具,Selenium可以驱动浏览器自动执行自定义好的逻辑代码,即通过代码完全模拟使用浏览器自动访问目标站点并操作,所以也可以用来爬虫。

二、准备工作

  • 安装Chrome
  • 下载对应版本的chromedriver.exe
2.1 chrome 查看版本
# chrome地址栏输入下面的内容即可查看
chrome://version/

在这里插入图片描述

2.2 下载对应版本的chromedriver.exe
  • 上下2图的版本号要对应上(最新版本的chrome的driver可能还没有)
    在这里插入图片描述
2.3 一组对应上的chrome和driver
  • 微信搜索“数字续坚”,在“资源”TAB页面,输入“selenium”,然后复制百度网盘的下载地址
  • 注意:chrome会自动更新,建议安装chrome前,先在hosts文件中加入如下内容,屏蔽chrome的自动升级
127.0.0.1 update.googleapis.com

三、编码实现

  • 这里就不废话了,如下代码
	// Java 代码//目标网站的网址,也可以直接是验证码链接String targetUrl = "https://www.baidu.com";//设置chromedriver.exe的路径,下方是在当前目录下System.setProperty("webdriver.chrome.driver", "./chromedriver100.exe");ChromeDriver chromeDriver =new ChromeDriver();chromeDriver.get(url);//读取cookieSet<Cookie> cookies = chromeDriver.manage().getCookies();String cookieStr = "";for (Cookie cookie : cookies) {cookieStr += cookie.getName() + "=" + cookie.getValue() + ";";}//打印cookie结果System.out.println(cookieStr);

四、快速获取cookie的办法

  • 针对其他语言、其他系统或不想配置chrome+driver的兄弟,这里提供了快速获取的办法
  • 见文档。

相关文章:

  • 如何在CentOS 7 中搭建Python 3.0 环境
  • 项目管理十大知识领域之项目整体管理
  • 车载音频EMI的产生及典型音频功放AW836XX的解决方案
  • C#使用Stopwatch实现执行耗时及性能监测
  • JavaScript类型检测【全】
  • 20240116-唯一出现次数
  • Java后端学习路线
  • ssh -T git@github.com Connection timed out 解决方案-自测有效
  • 【征稿进行中|见刊快速】2024年社会发展与艺术鉴赏国际学术会议(IACSDAA 2024)
  • uniapp如何实现跨端适配
  • vite+vue3创建项目及开发常见的问题
  • 【数据结构和算法】反转链表
  • 在国产操作系统下管理MYSQL数据库
  • zabbix其他配置
  • 微信小程序实战-03翻页时钟-3
  • .pyc 想到的一些问题
  • 2017年终总结、随想
  • 5、React组件事件详解
  • express.js的介绍及使用
  • iOS | NSProxy
  • JS变量作用域
  • JS字符串转数字方法总结
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Webpack 4x 之路 ( 四 )
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • yii2中session跨域名的问题
  • 好的网址,关于.net 4.0 ,vs 2010
  • 基于webpack 的 vue 多页架构
  • 线上 python http server profile 实践
  • 学习使用ExpressJS 4.0中的新Router
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #ifdef 的技巧用法
  • $L^p$ 调和函数恒为零
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (4)STL算法之比较
  • (JS基础)String 类型
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)计算机毕业设计大学生兼职系统
  • (南京观海微电子)——COF介绍
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (一)SpringBoot3---尚硅谷总结
  • (转)socket Aio demo
  • (转)创业的注意事项
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET MVC之AOP
  • .NET单元测试
  • []我的函数库
  • [2669]2-2 Time类的定义