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

    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
  • 来自专栏悟道

    2-4 快速乘法 模板

    适用于不让用/ * 的情况实现某些结果 ! /** * 快速乘法 * * @param a 乘数 * @param b 被乘数 * @return 积 */ public static long quickMulti(long a, long b) { long result = 0; while (b > 0) { if ((b & 1) == 1) {

    54210发布于 2021-06-01
  • 来自专栏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
  • 来自专栏咸鱼学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
  • 来自专栏娜姐聊前端

    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
  • 来自专栏刷题笔记

    2-4 另类堆栈 (20 分)

    本文链接:https://blog.csdn.net/shiliang97/article/details/101049523 2-4 另类堆栈 (20 分) 在栈的顺序存储实现中,另有一种方法是将Top

    84230发布于 2019-11-08
  • 来自专栏前端开发

    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
  • 来自专栏Deep learning进阶路

    2-4 线性表之双链表

    2-4 线性表之双链表 双向链表除了相当于在单链表的基础上,每个结点多了一个指针域prior,用于存储其直接前驱的地址。同时保留有next,用于存储其直接后继的地址。 ?

    60820发布于 2019-07-02
  • 来自专栏前端小学生

    你所不了解的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
  • 来自专栏Hank’s Blog

    2-4 R语言基础 列表

    > l1 <- list("a",2,10L,3+4i,TRUE) #每个元素没有名字 > l1 [[1]] [1] "a"

    59820发布于 2020-09-16
  • 来自专栏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
  • 来自专栏IT技术圈

    练习2-4 温度转换 (5分)

    本题要求编写程序,计算华氏温度150°F对应的摄氏温度。计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。

    1.2K10发布于 2021-02-24
  • 来自专栏wfaceboss

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

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

    96750发布于 2019-04-08
  • 来自专栏咸鱼学Python

    Python爬虫进阶必备 | X笔网密码加密分析

    咸鱼之所以这样搜索是出于自己的习惯,定位加密位置的方法有很多大家有兴趣可以多尝试不要局限于搜索参数,例如:Js Hook,XHR 断点等等,怎么舒服怎么来就好。 经过搜索参数名password:在一个文件中定位到 3 处疑似加密的位置。 【图1-6】 图1-6 这一整个流程分析下来,可以发现前面的传参部分,在Python调用中我们完全可以跳过,只要给【图1-6】中的Js加密逻辑传入publicKey与明文密码就可以实现这个网站的密码加密逻辑了 继续调试,这次提示变成了navigator is not defined【图2-4】 图2-4 有了上次的经验,我们在代码里加入声明navigator。 var navigator = {} 再次运行就得到加密后的结果咯~【图2-5】 图2-5 总结 这次的加密是比较简单的 RSA 加密,使用文件中包含的公钥对密码的值进行加密,且Js代码没有进过混淆,

    1.1K20发布于 2019-09-19
  • 来自专栏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
  • 来自专栏咸鱼学Python

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

    XX街登陆密码加密 aHR0cDovL3NlbGxlci5jaHVjaHVqaWUuY29tL3NxZS5waHA/cz0vVXNlci9pbmRleA== 这个加密太简单了,五秒定位真的不是吹,所以直接来 ,直接到加密参数分析的地方。 Tip: 这次的加密不是异步的 不要在 XHR 选项卡傻乎乎的等了。 图2-3 当然我们也可以试试搜索 参数名 su 【图2-4】,很明显搜索结果也验证了我们的猜想。 ? 图2-4 接下来看看 sp 在我们上面搜索 su 的地方我们找到了密码加密的地方,已经用红框框出主要的逻辑【图2-5】,接下来我们打上断点找找缺失的参数都是什么。 ?

    94110发布于 2019-09-09
  • 来自专栏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
领券