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

    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),且必须指定具体域名

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

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

    未来发展方向是Fetch取代AJAX 回答 2: XHR vs AJAX XHR(XMLHttpRequest)对象用于与服务器交互,是AJAX技术方案的基础,也可以说,使用XHR对象来发送一个Ajax 对象 var xhr = new XMLHttpRequest(); //设置xhr请求的超时时间 xhr.timeout = 3000; //设置响应返回的数据格式 xhr.responseType case 1://OPENED break; case 2://HEADERS_RECEIVED break; case 3: (formData); } 回答 3XHR vs axios Axios是一个基于promise的HTTP库,可以用在浏览器和 node.js 中。 支持xhr.ontimeout超时自动取消,也支持xhr.abort()主动取消请求) 无法检测请求的进度(XHR可以)

    2.2K30发布于 2021-11-24
  • 来自专栏波波烤鸭

    shiro教程3(加密)

    常见算法 算法 描述 DES(Data Encryption Standard) 数据加密标准,速度较快,适用于加密大量数据的场合; 3DES(Triple DES) 是基于DES,对一块数据用三个不同的密钥进行三次加密 123456","aaa",2); System.out.println(md5); } 输出的结果: e10adc3949ba59abbe56e057f20f883e 88316675d7882e3fdbe066000273842c //88316675d7882e3fdbe066000273842c 1次迭代的密文 //a7cf41c6537065fe724cc9980f8b5635 2次迭代的密文 String pwd = "88316675d7882e3fdbe066000273842c"; // 验证密码 AuthenticationInfo info = new SimpleAuthenticationInfo // 2.通过Factory对象获取SecurityManager对象 SecurityManager securityManager = factory.getInstance(); // 3.

    1.1K20发布于 2019-04-02
  • 来自专栏Java帮帮-微信公众号-技术文章全总结

    shiro教程3(加密)

    私钥解密公钥加密数据,公钥解密私钥加密数据(私钥公钥可以互相加密解密)。 加密算法分类 单向加密 单向加密是不可逆的,也就是只能加密,不能解密。 e10adc3949ba59abbe56e057f20f883e 88316675d7882e3fdbe066000273842c a7cf41c6537065fe724cc9980f8b5635 盐值的作用 //88316675d7882e3fdbe066000273842c 1次迭代的密文 //a7cf41c6537065fe724cc9980f8b5635 2次迭代的密文 String pwd = "88316675d7882e3fdbe066000273842c"; // 验证密码 AuthenticationInfo info = new SimpleAuthenticationInfo // 2.通过Factory对象获取SecurityManager对象 SecurityManager securityManager = factory.getInstance(); // 3.

    97030发布于 2019-12-13
  • 来自专栏前端开发

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

    54610编辑于 2024-03-20
  • 来自专栏全栈程序员必看

    python 3Des 加密

    import hashlib; from Crypto.Cipher import DES3 import base64 def create_key(sk):     r=hashlib.md5 return s  key=’2345’#秘钥 b2bpwd=”oohbv”     keys=create_key(key)     ss=init_str(b2bpwd)     des3= DES3.new(keys,DES3.MODE_ECB)     res2=des3.encrypt(ss)     b2bencryptkey=  base64.standard_b64encode

    1.6K40发布于 2021-11-29
  • 来自专栏python3

    DES3DESAES加密

    3DES 3DES是DES加密算法的一种模式,它使用3条64位的密钥对数据进行三次加密。 DES使用56位密钥和密码块的方法,而在密码块的方法中,文本被分成64位大小的文本块然后再进行加密。比起最初的DES,3DES更为安全。 3DES(即 Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),是DES的一个更安全的变形。 它以DES为基本模 块,通过组合分组方法设计出分组加密算法,其具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明 文,C代表密表,这样, 3DES加密过程为 :C=Ek3(Dk2(Ek1(P))) 3DES解密过程为:P=Dk1((EK2(Dk3(C))) 具体的加/解密过程如图所示。

    1.4K30发布于 2020-01-08
  • 来自专栏前端小学生

    你所不了解的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 :', xhr.readyState); // 1、4 } xhr.send(); xhr.onreadystatechange = function () { console.log('readystate

    47530编辑于 2023-05-26
  • 来自专栏python-爬虫

    node启动js-3DES-ECB加密,python-3DES-ECB加密

    一.node启动js-3DES-ECB加密 var arguments = process.argv.splice(2); // console.log('所传递的参数是:', arguments); var password = arguments[0]; //加密的password var t= arguments[1]; //加密的txt var forge = require('node-forge 加密 from Crypto.Cipher import DES3 import base64 import json BS = DES3.block_size def pad(s): return MODE_ECB def encrypt(self, text): text = pad(text) cryptor = DES3.new(self.key, plain_text.decode("utf-8")).rstrip('\0') out = unpad(st) return out code = json.dumps(text) //加密的内容

    1.3K10发布于 2020-07-02
  • 来自专栏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 /query'); xhr.send(); xhr.onload = function() { const res = JSON.parse(this.responseText

    4.7K20编辑于 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 请求的便捷方法。

    2.9K11编辑于 2024-03-18
  • 来自专栏wfaceboss

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

    (1)异步请求的函数封装 /* * XHR连接对象 * 把请求的函数做成一个序列,按照执行序列来完成每一个序列项的任务 * * */ (function () { //(1)一个request请求 callBack(o); } } },500) } //(2)获取XHR ; }catch(e){} } } return http; } //(3) this.onFlush=function () {new DED.util.Observer();} //重复次数 this.retryCount=3;

    90250发布于 2019-04-08
  • 来自专栏DT乱“码”

    3DES 加密与解密

    ///

        /// C#/PHP/JSP 3DES 加密与解密(只支持UTF-8编码)     ///     public class Crypto3DES // 默认密钥         ///         private string Keys;         ///         /// 密钥与加密字符串不足 //         private char paddingChar = ' ';         ///         /// 实例化 Crypto3DES 类         ///         /// <param name="key">密钥</param>         public Crypto3DES(string 与Java通用加密         ///         /// <param name="pToEncrypt">需要加密的字符</param>         ///

    2.5K101发布于 2018-02-09
  • 来自专栏python3

    BT3破解WEP加密

    以下是破解过程 WEP 破解 1) ifconfig -a 2) airmon-ng start wifi0 11 重新点击左下角黑色按钮  打开新窗口 3) airodump-ng  --ivs  - ath1 4) aireplay-ng  -1  0  -e  (ESSID下面的数值)  -a  (BSSID下面的数值)   -h   本机MAC   ath1 5: aireplay-ng    -3    但是在用BT3光盘启动到其所使用的LINUX系统时,需要将硬盘模式改为AHCI,如果为兼容模式,则无法进入,这个是联想SL500笔记本上这样做的。 如果信号离的很近,也不需要什么卡皇或者卡王了。

    1.6K20发布于 2020-01-14
  • 来自专栏python3

    Unity3D DLL加密

    Unity3D打包android应用程序时,如果不对DLL加密,很容易被反编译,导致代码的泄露。通常的做法是通过加密DLL或者对代码进行混淆。 本文的所要探讨的是通过加密的方式来对DLL进行保护,并详细记录加密的操作过程。 unity3d 4.6版本,本文试验的是4.6的编译,注意一定要安装4.6.6+的版本,否则重编的libmono.so会报错(坑一)。 ANDROID_NDK_ROOT=/home/xubo/unity-dev/android-ndk-r10e        export PATH=$ANDROID_NDK_ROOT:$PATH 3) DHAVE_PTHREAD_MUTEX_TIMEDLOCK \ -fpic -g -funwind-tables \ 同样build_runtime_android_x86.sh里面也去掉 Unity3D

    2.7K40发布于 2020-01-07
  • 来自专栏葫芦

    python python3 RSA加密

    RSA from Crypto.Cipher import PKCS1_v1_5 import base64 pubkey = """-----BEGIN RSA PUBLIC KEY-----\n 加密码 --END RSA PUBLIC KEY-----\n""" messages = [ 'userid=test1', 'userid=test2', 'userid=test3'

    1.5K20发布于 2019-10-16
  • 来自专栏python3

    3DES_ECB_加密解密

    Input: // src-源数据(byte[]) key-加密秘钥(byte[]) Output: // 加密后的数据 Algorithm); //生成密钥21 Cipher c1 = Cipher.getInstance("DESede/ECB/NoPadding"); //实例化负责加密 /解密的Cipher工具类22 c1.init(Cipher.ENCRYPT_MODE, deskey); //初始化为加密模式23 Util.hexStringToByteArray(msg); byte[] secretStr = SecretUtils.encryptMode(src,keyBytes); //调用加密方法 System.out.println("【Card Cryptogram DATA明文是】:" + msg); System.out.println("【Card Cryptogram 全部加密文是

    1.5K20发布于 2020-01-08
  • 来自专栏Spider篇

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

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

    56820编辑于 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); //2,获取xhr的方法--不同浏览器不一样 createXhrObject:function () { var methods=[ SimpleHandler(); (2)接口检验实现类是否完全实现接口中的方法 Interface.ensureImplement(myHandler,AjaxHandler);//检验是否实现接口中所有方法 (3

    54120发布于 2019-04-08
领券