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

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

    36氪和虎嗅网这两个网站新闻爬虫比较具有代表性,36氪是传统的html网页爬虫,虎嗅网是异步api加载加密的爬虫,这里就从简单的36氪讲起。 可以看到关键字出现在了html中,而不是xhr接口中,所以在36Kr获取最新的AI快讯就就是对HTML进行解析即可。接着看看HTML请求头信息,获取URL来获取HTML。 在控制台通过搜索关键字,我们在xhr异步接口中发现了新闻咨询内容。 如图,新闻数据通过接口请求返回json的方式渲染的,而非36Kr返回的HTML,所以虎嗅网AI新闻咨询爬虫就是一个比较常见的XHR动态加载的爬虫。 是将一个固定字符串n、timestamp、nonce放进去,然后进行排序,最后将三个元素拼接成一个字符串进行加密。我们接着探究f():t就是传进来的三合一的参数。

    1.7K50编辑于 2024-03-12
  • 来自专栏Deep learning进阶路

    2-6 链表逆序

    2-6 链表逆序 我只介绍两种常用方法吧,非递归方法 和 递归 方法 我觉得够用就行 1、非递归方法: 将第二个元素后面的元素依次插入到头结点后面, 最后再把原始第一个元素放到原始第二个元素后面,整个链表就能够反转了

    97510发布于 2019-07-02
  • 来自专栏咸鱼学Python

    Python爬虫进阶必备 | 关于某电商网站的加密请求头 if-none-match 的分析

    所以这里尝试使用Xhr断点的方式分析。【图2-3】 ? 打上这个断点之后,重新加载页面。【图2-4】 ? 可以在这里看到t的值中就包含了我们需要的请求头if-none-match,所以可以猜测在这个 xhr 断点之前就已经完成了这个值的生成。 所以这里可以先在这个 xhr 断点前下一个断点之后暂时取消 xhr 断点。【图2-5】 ? 到这里之后我们直接单步调试,可以看到下面这段逻辑【图2-6】 ? 经过分析可以看到在代码中有一段在字典中赋值的操作,并且这里也找到了加密的字段名。【图2-7】 ? 所以上面就是加密字段的加密位置。 加密很简单直接带入 Python 实现的加密即可。【图3-3】 ?

    1.2K20发布于 2020-03-25
  • 来自专栏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
  • 来自专栏娜姐聊前端

    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
  • 来自专栏咸鱼学Python

    Python爬虫进阶必备 | X博密码算法扣取+如何去扣取一个完整的逆向案例

    XX街登陆密码加密 aHR0cDovL3NlbGxlci5jaHVjaHVqaWUuY29tL3NxZS5waHA/cz0vVXNlci9pbmRleA== 这个加密太简单了,五秒定位真的不是吹,所以直接来 ,直接到加密参数分析的地方。 Tip: 这次的加密不是异步的 不要在 XHR 选项卡傻乎乎的等了。 图2-5 这里的参数都是比较简单的首先是 me.servertime 、me.rsaPubkey 和 me.nonce【图2-6】 这三个参数在上一个请求包都有同名的参数返回可以参考【图2-1】。 图2-6 我们现在已经找齐了全部的参数,接下来需要切换到 webstorm 中调试出我们整体的加密算法。 直接粘贴 789 - 791 行的代码到编辑框中补全成下面这样。

    94110发布于 2019-09-09
  • 来自专栏Hank’s Blog

    2-6 R语言基础 缺失值

    > is.na(x) [1] FALSE TRUE FALSE TRUE FALSE

    40720发布于 2020-09-16
  • 来自专栏前端开发

    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
  • 来自专栏前端小学生

    你所不了解的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
  • 来自专栏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.2K11编辑于 2024-03-18
  • 来自专栏wfaceboss

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

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

    96850发布于 2019-04-08
  • 来自专栏ypw

    题目 1675: 算法2-3~2-6:Big Bang

    题意:题目的意思就是insert 是在一个地方插入一个字符串,然后delete是删除一个字符串,show是展示当前存在的所有字符串,然后search 是查找字符串然后输出字符串存在的序号。

    41740发布于 2021-03-04
  • 来自专栏Spider篇

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

    分析请求时提交的参数,是一个GET请求,sign是MD5加密字符串,appid是版本号写死即可,TSID是歌曲ID,timestamp是10位的时间戳 加密的明文数据为下列的字符串,只需更换TSID 断点调试,使用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加密代码

    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对象的readyState属性   使用xhr发起带参数的GET请求   URL编码与解码     什么是URL编码     如何对URL进行编码与解码   使用xhr发起post请求 使用xhr发起GET请求 步骤 1.创建xhr对象 2.使用xhr.open()函数 3.调用xhr.send()函数 4.监听xhr.onreadystatechange事件。 xhr.send(); xhr.onreadystatechange = function () { if (xhr.readyState === 4 && xhr.status 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
  • 来自专栏cwl_Java

    C++编程之美-数字之魅(代码清单2-6)

    代码清单2-6 ret = 0; for(i = 1; i <= N; i++) { j = i; while(j % 5 ==0) { ret++;

    24240编辑于 2022-11-30
  • 来自专栏Spider篇

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

    实现思路 1、通过关键词检索,拿到歌曲信息; 2、通过歌曲ID请求某接口,拿到歌曲的.m4a链接; 3、通过歌曲的.m4a链接进行歌曲下载; 1、打开网站,首页搜索框输入关键词,按回车键,可以发现这个XHR ,具体的加密代码我会放在后面; 加密的明文数据为下列的字符串,只需更换关键词(“青花瓷”)调用JS代码进行加密即可: '{"hlpretag":"" ":""} 调用JS加密实现,以及模拟发包 3、拿到歌曲的.m4a链接打开就可以直接播放啦 三、XHR断点调试,扣JS加密代码 逆向思路 1、通过浏览器,资源面板,添加XHR断点,让其在浏览器请求之前断住 ,可以发现此处的代码参数已经生成,需要通过调用堆栈进行跟值,找到加密代码处,一个一个往下跟,正常流程是每从堆栈切换至一个新的函数,得取消之前的断点,在新函数处重新下断点,刷新操作; 通过调用堆栈跟值来到此处明文加密函数 ,在window.asrsea()重新下断点; 取消XHR断点,刷新操作,进入window.asrsea()函数,可以看见window.asrsea()是由d()函数赋值的 3、ctrl

    91120编辑于 2023-02-02
领券