首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏入门到放弃之路

    AI新闻爬虫:传统爬虫和XHR异步加密爬虫的碰撞

    36氪和虎嗅网这两个网站新闻爬虫比较具有代表性,36氪是传统的html网页爬虫,虎嗅网是异步api加载加密的爬虫,这里就从简单的36氪讲起。 可以看到关键字出现在了html中,而不是xhr接口中,所以在36Kr获取最新的AI快讯就就是对HTML进行解析即可。接着看看HTML请求头信息,获取URL来获取HTML。 在控制台通过搜索关键字,我们在xhr异步接口中发现了新闻咨询内容。 如图,新闻数据通过接口请求返回json的方式渲染的,而非36Kr返回的HTML,所以虎嗅网AI新闻咨询爬虫就是一个比较常见的XHR动态加载的爬虫。 后来又打了一次断点,发现n这个变量发生了错误,在代码中,你可以看到我使用的是'hUzaABtNfDE-6UiyaYhfsmjW-8dnoyVc'。

    1.7K50编辑于 2024-03-12
  • 来自专栏Web Front End

    XHR对象中的withCredentials

    domain-a.com 站点发送一个 api.domain-b.com/get 的请求,默认是不会携带 api.domain-b.com 域下的 cookie,如果我们想携带(很多情况下是需要的),只需要设置请求的 xhr 跨域情况下,需要携带请求域下的cookie那么就需要配置xhr对象的withCredentials。 需要额外注意的是 当配置了xhr.withCredentials = true时,必须在后端增加 response 头信息Access-Control-Allow-Origin(CORS),且必须指定具体域名

    3.5K20发布于 2021-11-15
  • 来自专栏Android开发指南

    6.android加密解析

    编码.数字摘要.加密.解密 UrlEncoder /Urldecoder String str = "http://www.baidu.com? bitmap Bitmap bitmap2 = BitmapFactory.decodeByteArray(bitmapByteArr, 0, bitmapByteArr.length); //6. 上设置图片 iv.setImageBitmap(bitmap2); //obj-->byte[] -->string->sp } }); md5,sha1:数字摘要算法(不是加密解密 :aes de 对称加密:密码只有一个,加密速度比较快,只有一个密钥,可以加密文件之类; 非对称加密:密钥有两个(公钥,私钥),私钥自己保存.公钥给别人.私钥自己留着; 公钥加密-->私钥解密 (byte[] data, String privateKey);//私钥加密 public static byte[] decryptByPublicKey(byte[] encryptedData,

    1.2K111发布于 2018-05-14
  • 来自专栏全栈程序员必看

    6种php加密解密方法

    key), $string, MCRYPT_MODE_CBC, md5(md5($key)))); return $encrypted; } } //加密 php //改进后的算法 //加密函数 function lock_url($txt,$key='str'){ $txt = $txt. php //非常给力的authcode加密函数,Discuz! (带详解) //函数authcode($string, $operation, $key, $expiry)中的$string:字符串,明文或密文;$operation:DECODE表示解密,其它表示加密 php //函数encrypt($string,$operation,$key)中$string:需要加密解密的字符串;$operation:判断是加密还是解密,E表示加密,D表示解密;$key:密匙。

    2.2K30编辑于 2022-09-19
  • 来自专栏娜姐聊前端

    XHR,ajax,axios,fetch傻傻分不清?

    未来发展方向是Fetch取代AJAX 回答 2: XHR vs AJAX XHR(XMLHttpRequest)对象用于与服务器交互,是AJAX技术方案的基础,也可以说,使用XHR对象来发送一个Ajax 看看如何使用 XHR 发送 AJAX请求。 对象 var xhr = new XMLHttpRequest(); //设置xhr请求的超时时间 xhr.timeout = 3000; //设置响应返回的数据格式 xhr.responseType ... }; // 监听xhr状态 xhr.onreadystatechange = function () { try { switch(xhr.readyState 支持xhr.ontimeout超时自动取消,也支持xhr.abort()主动取消请求) 无法检测请求的进度(XHR可以)

    2.4K30发布于 2021-11-24
  • 来自专栏黯羽轻扬

    打包压缩加密备份_bash笔记6

    test.sh.zip -u test.sh 删除: # -d删除包里指定文件 zip -d test.sh.zip test.sh 查看: # -l列出包内容 unzip -l test.sh.zip 加密 /编码 linux提供了很多加密/编码工具:crypt, gpg, base64等等 crypt 从stdin接收文件输入和口令,把加密结果输出到stdout 加密: # 交互提示输入口令 crypt < test.sh # 把加密结果重定向到文件 crypt < test.sh > test.lock.sh 解密: # 同样,只接受来自stdin的,只输出到stdout crypt 口令 < test.lock.sh > test.sh P.S.Mac下没有该命令 gpg GUN privacy guard,采用密钥签名方式,简单用法如下: # 加密,交互提示输入口令,生成test.sh.gpg gpg -c test.sh test.sh.base64 > test.sh rsync rsync用来备份系统快照,自带diff和压缩机制,比scp等命令高效,此外还支持网络数据传输,会比较源和目标端的文件,只复制备份更新的,也支持加密选项

    1.6K30发布于 2019-06-12
  • 来自专栏前端开发

    XHR的属性和方法及事件汇总

    XHR的属性和方法及事件汇总 xhr.open xhr.send() xhr.onreadystatechange = function() { } 监听状态变化 xhr.reaadyState xhr.status 获取响应头信息 xhr.getResponseHeader([key]) 获得响应头的xxx信息 xhr.getResponseHeaders(‘Date ’) 获取服务器时间是标准的日期格式对象(GMT格林尼治时间) xhr.getAllResponseHeaders 获得到响应头的所有信息 获取响应主体信息 xhr.response 不限定类型 xhr.responseType 获取响应回来的类型 xhr.responText 限定类型 一般用 responseText,因为服务器返回的信息一般都是JSON格式的字符串 xhr.responseXML 限定类型 xhr.timeout 限制响应时间 xhr.abort() 终止响应 xhr.withCredentials = true 默认是false,我们会设置为true,在跨域请求中是否携带证书

    61710编辑于 2024-03-20
  • 来自专栏windliang的博客

    油猴脚本重写fetch和xhr请求

    写过几个油猴脚本,经常对页面请求返回的数据进行拦截或者覆盖,这篇文章就做个总结,涉及到 fetch 和 xhr 两种类型的请求。 环境搭建 先简单写个 html 页面,搭一个 koa 服务进行测试。 xhr 我们将 fetch 改为用 xhr 发送请求,因为页面简单所以请求可能在油猴脚本重写之前就发送了,正常网站不会这么快,所以这里加一个 setTimeout 进行延时。 setTimeout(() => { const xhr = new XMLHttpRequest(); xhr.open('GET', 'http://localhost:3002/api /query'); xhr.send(); xhr.onload = function() { const res = JSON.parse(this.responseText 总 通过对 fetch 和 xhr 的重写,我们基本上可以对网页「为所欲为」了,发挥想象力通过油猴脚本应该可以做很多有意思的事情。

    4.8K20编辑于 2022-09-27
  • 来自专栏Vue开发社区

    你知道 XHR 和 Fetch 的区别吗?

    在这个过程中,XHR 和 Fetch API 是两种最常见的方法,用于从 Web 服务器获取数据。XHR 是一种传统的数据请求方式,而 Fetch API 则代表了现代 Web 开发的新兴标准。 工作原理 XHR 的工作原理主要为: 创建 XHR 对象实例:通过new XMLHttpRequest()创建一个 XHR 对象。 // 创建一个新的XHR对象 const xhr = new XMLHttpRequest(); // 配置请求 xhr.open("GET", "https://api.baidu.com/test ("请求失败,状态码:" + xhr.status); } }; // 发起请求 xhr.send(); XHR 的响应处理通常在onreadystatechange事件处理程序中完成。 常用库和插件 基于 XHR 封装的库 jquery:一个 JavaScript 库,提供了用于处理 DOM 操作、事件处理和 XHR 请求的便捷方法。

    3.1K11编辑于 2024-03-18
  • 来自专栏前端小学生

    你所不了解的xhr

    = new XMLHttpRequest(); xhr.onreadystatechange = function () { console.log('readystate:', xhr.readyState ); xhr.send(); xhr.onreadystatechange = function () { console.log('readystate:', xhr.readyState); // 2、3....、4 } 四、readyState变化 const xhr = new XMLHttpRequest(); xhr.open('get', 'http://f.sinaimg.cn :', xhr.readyState); // 1、4 } xhr.send(); xhr.onreadystatechange = function () { console.log('readystate :', xhr.readyState); // 无返回 }

    51630编辑于 2023-05-26
  • 来自专栏wfaceboss

    JavaScript设计模式--桥梁模式--XHR连接队列

    (1)异步请求的函数封装 /* * XHR连接对象 * 把请求的函数做成一个序列,按照执行序列来完成每一个序列项的任务 * * */ (function () { //(1)一个request请求 callBack(o); } } },500) } //(2)获取XHR

    96750发布于 2019-04-08
  • 来自专栏Spider篇

    Web Spider XHR断点 千千XX 歌曲下载(三)

    :aHR0cHM6Ly9tdXNpYy45MXEuY29tLw== 提示:以下是本篇文章正文内容,下面案例可供参考 一、资源推荐 JS逆向加密解密工具 下载使用:https://blog.csdn.net == 数据可以直接看到,使用解析模块直接提取想要的数据 2、分析获取歌曲下载链的XHR接口,来到歌曲播放页面,歌曲的下载链接由下列接口返回的; 获取歌曲下载链的XHR接口url:aHR0cHM6Ly9tdXNpYy45MXEuY29tL3YxL3NvbmcvdHJhY2tsaW5r 断点调试,使用WT-JS还原JS加密代码 逆向思路 1、通过浏览器,资源面板,添加XHR断点,让其在浏览器请求之前断住,以便我们分析请求参数; 2、通过资源面板下的调用堆栈,进行跟值,找到加密代码处; 3、拿到加密明文后,使用WT-JS还原JS加密代码 4、通过python代码调用JS代码实现整个任务; 1、根据接口的url,下XHR断点,这里以获取歌曲下载链的XHR接口为例; 如果浏览器向该接口发送请求则会在发包前进行断点 ; 2、在歌曲播放页面刷新一下页面即可触发XHR断点,可以发现此处的代码参数已经生成,需要通过调用堆栈进行跟值,找到加密代码处,一个一个往下跟,正常流程是每从堆栈切换至一个新的函数,得取消之前的断点

    63420编辑于 2023-01-13
  • 来自专栏wfaceboss

    JavaScript设计模式--简单工厂模式例子---XHR工厂

    对象 var xhr=this.createXhrObject(); xhr.onreadystatechange=function () { //4代表的意思是交互完成 if(xhr.readyState! callback.success(xhr.responseText,xhr.responseXML): callback.failure(xhr.status); } //打开链接 xhr.open(method,url,true); //设置参数 //2,获取xhr的方法--不同浏览器不一样 createXhrObject:function () { var methods=[

    60420发布于 2019-04-08
  • 来自专栏前端领域

    【原生Ajax】全面了解xhr的概念与使用。

    作者主页: 作者主页查看更多前端教学 专栏分享:css重难点教学 Node.js教学 从头开始学习 ajax学习 文章目录 XHR的基本使用   什么是XHR   使用xhr发起GET请求 使用xhr发起GET请求 步骤 1.创建xhr对象 2.使用xhr.open()函数 3.调用xhr.send()函数 4.监听xhr.onreadystatechange事件。 数组结构:数组结构在JSON中表示为[]括起来的内容,数据结构为[‘java’,‘javascript’,30,true],数组中数据的类型可以是数字,字符串,布尔值,null,数组,对象6种类型。     6.不能使用undefined或函数作为JSON的值 JSON的作用:在计算机与网络之间存储和传输数据。 JSON的本质:用字符串来表示JavaScript对象数据或数组数据。     xhr.send(qs); } xhr level2的新特性   旧版xhr的缺点 只支持文本数据的传输,无法用来读取和上传文件。

    4.1K20编辑于 2022-11-28
  • 来自专栏大前端_Web

    深入理解xhr的responseType中blob和arrayBuffer

    一般的xhr请求 let url = window.URL || window.webkitURL; let xhr = new XMLHttpRequest(); xhr.open xhr.readystate === 4) { if(xhr.status =200) { let res = xhr.responseText; ,其他类型获取响应实体用xhr.response。 )=>{}; xhr.onreadystatechange=()=>{ if(xhr.readystate === 4) { if(xhr.status =200) xhr.response : xhr.responseText * 厉害!!!

    3.6K40发布于 2018-09-27
  • 来自专栏JAVA相关

    AJax(XHR+Get和Post+AJax的封装)

    (即刷新)创建 XHR 对象可以直接实例化 XMLHttpRequest 即可。 var xhr = new XMLHttpRequest();在使用 XHR 对象时,先必须调用 open()方法,它接受三个参数:要发送的请求类型(get、 post)、 请求的 URL 和表示是否异步 = new XMLHttpRequest();console.log(xhr);// 2、准备/打开请求 open(请求类型GET/POST,请求的路径,是否异步true/false);xhr.open 对象var xhr = new XMLHttpRequest();console.log(xhr);// 2、准备/打开请求 open(请求类型GET/POST,请求的路径,是否异步true/false );xhr.open("GET","js/data.json?

    64210编辑于 2025-05-29
  • 来自专栏Spider篇

    Web Spider XHR断点 堆栈跟值 逆向案例(四)

    = 分析请求参数,这是使用RSA、AES混合加密的字符串,具体的加密代码我会放在后面; 加密的明文数据为下列的字符串,只需更换关键词(“青花瓷”)调用JS代码进行加密即可: '{"hlpretag 加密的明文数据为下列的字符串,只需更换歌曲ID(1978112718)调用JS代码进行加密即可: {"ids": [1978112718],"level":"standard","encodeType ":"aac","csrf_token":""} 调用JS加密实现,以及模拟发包 3、拿到歌曲的.m4a链接打开就可以直接播放啦 三、XHR断点调试,扣JS加密代码 逆向思路 1、通过浏览器 ,资源面板,添加XHR断点,让其在浏览器请求之前断住,以便我们分析请求参数; 2、通过资源面板下的调用堆栈,进行跟值,找到加密代码处; 3、通过Notepad++工具,格式化JS代码,方便我们扣取自己想要的 ,刷新操作; 通过调用堆栈跟值来到此处明文加密函数,在window.asrsea()重新下断点; 取消XHR断点,刷新操作,进入window.asrsea()函数,可以看见window.asrsea

    91020编辑于 2023-02-02
  • 来自专栏Python 爬虫

    【JS 逆向百例】XHR 断点调试,Steam 登录逆向

    逆向目标 目标:Steam 登录 主页:aHR0cHM6Ly9zdG9yZS5zdGVhbXBvd2VyZWQuY29tL2xvZ2lu 接口:aHR0cHM6Ly9zdG9yZS5zdGVhbXBvd2VyZWQuY29tL2xvZ2luL2RvbG9naW4v XHR 断点定位 本次案例我们使用 XHR 断点来定位加密的位置,首先了解一下什么是 XHRXHR 全称 XMLHttpRequest,XHR 可以在不重新加载页面的情况下更新网页、在页面已加载后从服务器请求 既然是 XHR 断点,那么这种方法就只能用于 XHR 请求,这也是这种方法的缺点,通过 XHR 断点,定位到的位置通常在加密处理完成之后,已经准备发送请求了,这样的优点是我们可以跟踪栈,能比较容易地找到加密的地方 XHR 断点定位有两种方法,第一种是找到发送请求的 URL 之后,截取 URL 的一部分,在 Source 面板下,右侧 XHR/fetch Breakpoints 里添加你截取的 URL,如下图所示, 已成功断下: [03.png] 第二种方法,在 Network 面板,点击 XHR 过滤 XHR 请求,在 Initiator 项里可以看到调用的 JS,鼠标移到 JS 上,可以看到调用栈,点击第一个,

    2.5K32发布于 2021-09-09
  • 来自专栏Spider篇

    Web Spider XHR断点 堆栈跟值 逆向案例(三)

    == 数据可以直接看到,使用解析模块直接提取想要的数据 2、分析获取歌曲下载链的XHR接口,来到歌曲播放页面,歌曲的下载链接由下列接口返回的; 获取歌曲下载链的XHR接口url:aHR0cHM6Ly9tdXNpYy45MXEuY29tL3YxL3NvbmcvdHJhY2tsaW5r 断点调试,使用WT-JS还原JS加密代码 逆向思路 1、通过浏览器,资源面板,添加XHR断点,让其在浏览器请求之前断住,以便我们分析请求参数; 2、通过资源面板下的调用堆栈,进行跟值,找到加密代码处; 3、拿到加密明文后,使用WT-JS还原JS加密代码 4、通过python代码调用JS代码实现整个任务; 1、根据接口的url,下XHR断点,这里以获取歌曲下载链的XHR接口为例; 如果浏览器向该接口发送请求则会在发包前进行断点 ; 2、在歌曲播放页面刷新一下页面即可触发XHR断点,可以发现此处的代码参数已经生成,需要通过调用堆栈进行跟值,找到加密代码处,一个一个往下跟,正常流程是每从堆栈切换至一个新的函数,得取消之前的断点 r += secret的值; 3、还原JS加密代码,点击生成JS加密代码,粘贴至pycharm编辑器中调试 打开pycharm调试JS加密代码 五、代码实现 1、JS加密代码

    93820编辑于 2023-02-01
  • 来自专栏爬虫资料

    XHR请求解密:抓取动态生成数据的方法

    尤其是在目标网站通过XHR(XMLHttpRequest)动态加载数据的情况下,如何精准解密XHR请求、捕获动态生成的数据成为关键技术难题。 请求加密与混淆:部分网站对XHR请求参数进行混淆或加密处理,直接复制请求参数难以复现。 技术架构图 + 核心模块拆解技术架构图核心模块解析XHR请求解析模块 通过抓包工具(如Fiddler、Charles、Chrome DevTools)分析页面中的XHR请求,逆向出数据接口及参数。 数据准确率提高:精准还原XHR请求参数后,数据采集错误率下降至5%以内。 6. 总结本文从技术原理和实践案例两个层面,详细介绍了XHR请求解密在抓取动态生成数据中的应用。

    1.3K10编辑于 2025-03-05
领券