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

    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.6K50编辑于 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),且必须指定具体域名 Access-Control-Allow-Credentials: true 如果服务端不设置响应头,响应会被忽略不可用 默认情况下,标准的跨域请求是不会发送cookie等用户认证凭据的,XMLHttpRequest 2的一个重要改进就是提供了对授信请求访问的支持

    3.4K20发布于 2021-11-15
  • 来自专栏娜姐聊前端

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

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

    2.2K30发布于 2021-11-24
  • 来自专栏小锋学长生活大爆炸

    Selenium处理异步加载请求获取XHR消息体的2种方法

    : def get_xhr_logs(driver): log_xhr_array = [] for typelog in driver.log_types: perfs = driver.get_log ": # log_xhr_array.append(log) log_xhr_array.append(id) 4fe583422d0b309b9b1d4505e54b137c.cloudfront.net (CloudFront)', 'x-amz-cf-id': 'bhkU5eqTsWXmJRXa1AUu2mto5kMsWoWR-ePxEFpXHeS3uUIRd 2022041408', 'x-cache': 'Miss from cloudfront' }, 'mimeType': 'application/json', 'protocol': 'h2' workerReady': -1, 'workerRespondWithSettled': -1, 'workerStart': -1 }, 'url': 'https://api2.

    4.8K40编辑于 2022-05-09
  • 来自专栏前端开发

    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,在跨域请求中是否携带证书

    54410编辑于 2024-03-20
  • 来自专栏前端小学生

    你所不了解的xhr

    一、readyState 0: unsend,代理被创建,尚未调用open方法 1: opened,open已调用 2: headers received,send方法已调用,且头部和状态已可活动 3: ); // 1、2、3....、4 } xhr.open('get', 'http://f.sinaimg.cn/default/10f2c867/20230113/big_size.jpg', true ); 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 /default/10f2c867/20230113/big_size.jpg', false); xhr.onreadystatechange = function () { console.log

    47030编辑于 2023-05-26
  • 来自专栏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 请求的便捷方法。

    2.9K11编辑于 2024-03-18
  • 来自专栏windliang的博客

    油猴脚本重写fetch和xhr请求

    ("koa-router")(); router.get("/api/query", async (ctx, next) => { ctx.body = { data: [1,2,3 设置响应头 app.use(router.allowedMethods()); // 监听端口 app.listen(3002); 提供了 /api/query 接口,返回 data: [1,2,3 xhr 我们将 fetch 改为用 xhr 发送请求,因为页面简单所以请求可能在油猴脚本重写之前就发送了,正常网站不会这么快,所以这里加一个 setTimeout 进行延时。 setTimeout(() => { const xhr = new XMLHttpRequest(); xhr.open('GET', 'http://localhost:3002/api } }); } originOpen.apply(this, arguments); }; 看下页面会发现成功拦截了: image-20220824085203088 2

    4.7K20编辑于 2022-09-27
  • 来自专栏wfaceboss

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

    (1)异步请求的函数封装 /* * XHR连接对象 * 把请求的函数做成一个序列,按照执行序列来完成每一个序列项的任务 * * */ (function () { //(1)一个request请求 callBack(o); } } },500) } //(2) 获取XHR的工厂 var getXHR=function () { var http; try{ http XMLHttpRequest(); } }catch(e){ var msxml=[ 'MSXML2. continue; } a.push(this[i]); } }) return a; } })() (2

    90050发布于 2019-04-08
  • 来自专栏搜狗测试

    常见加密算法解析-2

    今天主要总结下常用的对称性加密算法:DES和AES,非对称性加密算法:RSA DES加密 DES含义: DES是对称性加密里常见的一种,全程是Data Encryption Standard ,即数据加密标准,是一种使用秘钥加密的块算法。 所谓对称性加密加密和解密秘钥相同。对称性加密一般会按照固定长度,把待加密字符串分成块。不足一整块或者刚好最后有特殊填充字符。 AES加密 AES含义: AES,高级加密标准,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。 RAS算法原理: 在了解RAS算法原理之前,先了解一下非对称加密的过程: 非对称加密是通过两个密钥(公钥-私钥)来实现对数据的加密和解密的。公钥用于加密,私钥用于解密。

    1.9K30发布于 2020-05-27
  • 来自专栏算法之名

    Springboot 2-OAuth 2修改登录加密方式

    Springboot2的Security框架用的是5.0的,较之4.0的密码加密方式有了很大的改变.spring security 5中主推的加密方式为BCrypt,由于这种加密方式效率很低,属于慢加密 ,但是加密强度很高,现有的机器性能难以暴力破解,但是随着科技的进步,机器性能增强,破解这种加密方式也会成为可能,但是加密方式也会不断更新. 废话说到这里,由于性能要求,对该加密登录的压测,只能达到50-80qps,这无疑对高并发登录是不能接受的,所以我们需要改掉这种加密方式,我们选择了MD5的加密.修改之前的安全配置如下. 这里面的client_secret的值其实是system字符串的BCrypt加密结果,我们需要改成如下所示 ? 这个值同样也是system,不过是由MD5加密的结果,主要需要加前缀{MD5}.这样在app_user表中,信息如下 ?

    1.6K20发布于 2019-08-20
  • 来自专栏路过君BLOG from CSDN

    EXTJS7 BUG分析解决 form启用xhr2提交丢失所有表单数据

    表单提交启用xhr2时会丢失所有表单数据 form.submit({ xhr2: true ... }); 源码 form/Panel.js ... beforeAjaxSubmit: function if (Ext.feature.has.XHR2 && request.xhr2) { delete request.form; // 此处将表单值存入request.data有误,

    45910发布于 2020-06-19
  • 来自专栏Spider篇

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

    分析获取歌曲下载链的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加密代码

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

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

    我们要把静态的函数直接写到类层次上 //(1)定义一个接口类 var Interface=function (name,methods) {//name:接口名字 if(arguments.length<2) { throw new Error("参数必须不少于2个") return false; } for(var i=1;i<arguments.length 对象 var xhr=this.createXhrObject(); xhr.onreadystatechange=function () { callback.success(xhr.responseText,xhr.responseXML): callback.failure(xhr.status); //2,获取xhr的方法--不同浏览器不一样 createXhrObject:function () { var methods=[

    53820发布于 2019-04-08
  • 来自专栏全栈程序员必看

    P2P建立加密通道

    核心:DH秘钥交互算法 DH算法:对于非对称加密算法部分支持DH算法(spec256K1、curv25519、ed25519不支持但可以转换到curv25519间接实现),PrivA+PubB = PrivB +PubA,算法在公开双方公钥时就可使用各自保存的私钥,进行秘钥的交换; 加密随机种子: 随机生成nonce值,使用该nonce值以及交换过的秘钥对数据进行加密,nonce值附加到密文头部一同发送到对方

    82610编辑于 2022-08-25
  • 来自专栏前端领域

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

    level2的新特性   旧版xhr的缺点   xhr levle2的新特性     设置http请求时限。     使用xhr发起GET请求 步骤 1.创建xhr对象 2.使用xhr.open()函数 3.调用xhr.send()函数 4.监听xhr.onreadystatechange事件。 ); console.log(str4);   使用xhr发起post请求 步骤 1.创建xhr对象 2.调用xhr.open()函数 3.设置Content-Type属性(固定写法 2.在JavaScript中解析XML比较麻烦。   xhr.send(qs); } xhr level2的新特性   旧版xhr的缺点 只支持文本数据的传输,无法用来读取和上传文件。

    3.9K20编辑于 2022-11-28
  • 来自专栏悟空聊架构 | 公众号

    WCF安全2-非对称加密

    概述: 数字签名和加密依赖于相应的加密算法   自变量:加密前的数据、密钥   因变量:加密后的数据 加密算法分类:根据加密和解密这两种步骤采用的密钥的是否相同进行分类   相同:对称加密   不相同: 非对称加密 非对称加密的应用场景:   (1)通过对消息进行加密解决机密性问题(消息的内容仅对发送者期望的接收者可见) (2)通过数字签名实现身份认证和数据一致性 1.消息加密 非对称加密:公钥/私钥 2.数字签名 签名: (1)发送方采用某种算法对整个消息的内容实施哈希计算,得到一个哈希码 (2)发送发使用自己的私钥对该哈希码进行加密加密后得到的密文就是数字签名 (3)将数字签名和密钥对中的公钥附加到源消息上 (2)数字证书将公钥值绑定到持有对应私钥的个人、设备或服务的标识信息上。 (3)大多数证书基于X.509 V3证书标准,所以称作X.509证书。 (2)创建数字证书 用户对数字证书的认可取决于对证书颁发机构的信息,所以证书颁发机构决定了数字证书的可用范围。

    90760发布于 2018-05-18
  • 来自专栏AI那点小事

    算法提高 9-2 文本加密

    问题描述   先编写函数EncryptChar,按照下述规则将给定的字符c转化(加密)为新的字符:”A”转化”B”,”B”转化为”C”,… …”Z”转化为”a”,”a”转化为”b”,… …, “z” 转化为”A”,其它字符不加密。 编写程序,加密给定字符串。 样例输出 与上面的样例输入对应的输出。 例: ? 数据规模和约定   输入数据中每一个数的范围。   例:50个字符以内无空格字符串。

    53640发布于 2020-04-20
  • 来自专栏大猪的笔记

    ubuntu安装botan2加密

    原文:http://forum.ubuntu.org.cn/viewtopic.php?f=186&t=487310 下载解压编译安装,没啥好说的,可以访问Botan-Index of release

    1.6K10发布于 2019-11-22
  • 来自专栏红蓝对抗

    流量加密之C2隐藏

    所以我们需要加密流量保护CS服务器以免被防守方的安全监控检测出来甚至溯源我们的CS服务器,目前常用的隐藏手段包括域前置、CDN、云函数等,接下来我将介绍这几种常见的隐藏C2的方式。 成功解析则说明目前一切顺利curl 172.67.175.223 -H "Host: xxx.xyz" -v截屏2022-04-19 11.29.56在 Cloudflare 中开启 SSL 并设置SSL/TLS加密模式为完全创建 /install.sh截屏2022-04-20 16.46.02使用 C2concealer 生成 CS 的配置文件C2concealer --variant 1 --hostname c2.xxx.xyz WireShark 抓包在 WireShark 中跑的都是TLS加密流量、目的地址为随机的CDN节点,因此无法溯源到我们C2服务器的真实IP0x03 总结通过这段时间针对流量加密的学习,我发现网络攻击与防守总是在不断转换 ,就像CDN在设计之初主要用于保护网站的真实IP,但作为攻击者我们也可以使用它来保护我们的C2服务器;而使用OpenSSL生成的RSA证书除了身份验证以外也能够帮助攻击者加密流量、隐藏通信。

    13.4K111编辑于 2022-06-21
领券