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

    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
  • 来自专栏全栈程序员必看

    sm4 前后端 加密_sm4加密

    前言 项目里需要用到sm4加密,在这里记录一下(springboot)。 Cipher cipher = generateEcbCipher(DECRYPT_MODE, key); return cipher.doFinal(cipherText); } /** * cbc 加密 , ivParameterSpec); return cipher; } /** * ecb 加密 times 次 * @param data * @param salt * @param times NoSuchProviderException | NoSuchAlgorithmException | InvalidKeyException var5) { throw new GeneralSecurityException(“SM4加密失败 ”); } } /** * cbc 加密 times 次 * @param data * @param salt * @param times * @return= */ public static String

    1.3K30编辑于 2022-11-08
  • 来自专栏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 爬虫进阶必备 | 关于某数 4XHR 参数 MmEwMD 的分析

    今日网站 现在 web js 逆向分析真的好卷啊 关于某数 4 代的 cookie 分析文章网上已经好多了,很多大佬已经开始转战 app 逆向,所以趁着最后蹭一蹭热度发一下关于 XHR 参数 MmEwMD 的分析文章 aHR0cDovL3d3dy5zaHRkc2MuY29t 抓包分析 因为是 xhr 参数,所以主要关注的界面还是xhr过滤器,打开网站可以过滤出下面这样的请求 我们就拿这个请求为例,分析这个例子 这里就是简单提一嘴大家注意一下 定位加密 多点几下网页,应该可以注意到所有的请求链接都有带上MmEwMD 这个参数 之前教给大家的搜索大法在这里当然就失效了,毕竟是曾经的天花板,这点小防护还是有的 那么我们应该如何定位这个参数的加密呢 _$lT就是MmEwMD加密的入口函数了 那么现在知道了这个MmEwMD入口之后,我们之后可以直接搜索进到这个位置分析吗? 这不就到了吗,解决完定位加密位置的部分,我们来分析一下他都检测了什么 分析加密 刚刚我们点位到了入口,现在进入_$Yr看看他都做了什么 这里传入的是接口链接的一部分,可以理解为path+params

    2K10编辑于 2022-01-18
  • 来自专栏iOS 备忘录

    iOS RC4加密

    iOS RC4加密 iOS RC4加密的实现,要注意加密后生成字符串的步骤,有些要求是base64加密后输出,有些要求是字节数组转16进制字符串输出,所以要特别注意。 代码如下: // rc4加密 - (NSString *)rc4Encode:(NSString *)aInput key:(NSString *)aKey { NSMutableArray * return resultString; } //rc4解密 - (NSString *)rc4Decode:(NSString *)data key:(NSString*)secret{ // 如果是16进制字符串 NSData *raw = [self ByteDataFromString:data]; // 如果是base64加密后字符串 // *data = [NSData dataWithBytes:buf length:len]; free( buf ); return data; } 参考 iOS,objectC,RC4加密解密方法

    1.5K10发布于 2021-07-29
  • 来自专栏Java菜鸡冲冲冲!

    SM4加密解密

    //身份证、手机号SM4加密存储 sysBfinfo.setLeaderIdcard(SM4Util.encryptEcb(SM4Util.hexKey,sysBfinfo.getLeaderIdcard PROVIDER_NAME = "BC"; public static final String ALGORITHM_NAME = "SM4"; // 加密算法/分组加密模式/分组填充方式 NoSuchAlgorithmException | InvalidKeyException var5) { throw new GeneralSecurityException("SM4加密失败 "); } } /** * sm4加密 * @explain 加密模式:ECB 密文长度不固定,会随着被加密字符串长度的变化而变化 * @ param hexKey 16进制密钥(忽略大小写) * @param paramStr 待加密字符串 * @return 返回16进制的加密字符串 */ public

    4.2K01发布于 2021-02-03
  • 来自专栏加密解密

    加密解密(RC4)

    特点:简单高效:RC4算法的实现相对简单,运行速度快,适用于资源有限的设备和环境,对实时性要求比较高的应用场景。对称加密:RC4算法是一种对称加密算法,使用相同的密钥进行加密和解密。 长度无限制:RC4算法对于加密/解密数据的长度没有限制,适合于加密数据流。实现简单:RC4算法的实现简单,只需要一个密钥和一个初始化向量。 应用场景:无线通信领域中:RC4算法被用于保护Wi-Fi网络的安全。在SSL加密中:RC4算法是一种可选的加密算法。在游戏保护中:RC4算法可以用于加密游戏关键数据。 在电子商务中:RC4算法可以用于加密信用卡等敏感信。 互联网通信:RC4算法可以用于保护互联网通信的安全性,例如SSL/TLS协议中的RC4加密套件。数据加密:RC4算法可以用于对数据进行加密,例如文件加密、数据库加密等。

    1.2K10编辑于 2024-08-01
  • 来自专栏娜姐聊前端

    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 ... }; // 监听xhr状态 xhr.onreadystatechange = function () { try { switch(xhr.readyState case 2://HEADERS_RECEIVED break; case 3://LOADING break; case 4: 支持xhr.ontimeout超时自动取消,也支持xhr.abort()主动取消请求) 无法检测请求的进度(XHR可以)

    2.4K30发布于 2021-11-24
  • 来自专栏前端开发

    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
  • 来自专栏全栈程序员必看

    sm4算法加密解密

    对称加密加密算法主要可以分为两种,一个是非对称加密算法,另一个就是对称加密算法。 对称加密简单来说就是有一个明文,通过一个密钥加密之后得到一个密文,这个密文可以通过相同的密要解密得出和原来相同的明文 二、sm4算法 算法定义:SM4算法是一种分组密码算法。 SM4算法加/解密算法的结构相同,只是使用轮密钥相反,其中解密轮密钥是加密轮密钥的逆序。 (plaintext).trim(); } /** * SMS4加密加密字符数组 * * @param plaintext 字节数组形式的明文 * @param key 秘钥 * @return sm4 = new Sm4Util(); sm4.sms4(ciphering, 16, key, plain, DECRYPT); return plain; } /** * 只加密32位明文 *

    4.7K20编辑于 2022-11-08
  • 来自专栏全栈程序员必看

    SM4 加密算法_des加密算法流程

    SM4加密算法 密码算法中常用的一些数据单位: 位/比特/bit:指一个二进制位。 字节/byte:1字节=8位 [公式] 字/word:1字=4字节=32位 [公式] SM4是一种分组密码算法,其分组长度为128位(即16字节,4字),密钥长度也为128位(即16字节,4字)。 加密过程分为两步,由32次轮迭代和1次反序变换组成。 SM4的解密过程与加密过程完全相同,也包括32轮迭代和一次反序变换。只是在轮迭代的时候,需要将轮密钥逆序使用。 1.69</version> </dependency> 代码块 @Test void contextLoads() { String content="123456"; SM4 sm4 = SmUtil.sm4(); String encryptHex = sm4.encryptHex(content); String decryptStr = sm4.decryptStr

    3.4K20编辑于 2022-11-08
  • 来自专栏全栈程序员必看

    java+sm4+加密算法_SM4加密算法实现Java和C#相互加密解密

    SM4加密算法实现Java和C#相互加密解密 近期由于项目需要使用SM4对数据进行加密,然后传给Java后台,Java后台使用的也是SM4加密算法但是就是解密不正确,经过一步步调试发现Java中好多数据类型与 ,那就让他们使用同一个语言进行加密解密,就是加密和解密都是用C#就可以完美的解决了。 C#SM4加密代码 下面详细解释各个类。 Org.BouncyCastle.Utilities.Encoders; namespace SM4 { public class MainSm4 { /// /// 加密ECB模式 /// (plainText.getBytes(),”ASCII”)); } //System.out.println(“测试返回结果:”+cipherText); } } OK完美实现Java和C#的SM4加密解密问题

    1.6K10编辑于 2022-11-10
  • 来自专栏前端小学生

    你所不了解的xhr

    open方法 1: opened,open已调用 2: headers received,send方法已调用,且头部和状态已可活动 3: loading,下载中,respenseText属性保护部分数据 4: ..、4 } xhr.open('get', 'http://f.sinaimg.cn/default/10f2c867/20230113/big_size.jpg', true); xhr.send( 4 } 四、readyState变化 const xhr = new XMLHttpRequest(); xhr.open('get', 'http://f.sinaimg.cn/default/10f2c867 , xhr.readyState); // 1、4 } xhr.onreadystatechange = function () { console.log('readystate:', xhr.readyState ); // 1、4 } xhr.send(); xhr.onreadystatechange = function () { console.log('readystate:', xhr.readyState

    51530编辑于 2023-05-26
  • 来自专栏Vue开发社区

    你知道 XHR 和 Fetch 的区别吗?

    工作原理 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 对象的状态变为 4(表示请求完成)并且 HTTP 状态码为 200(表示成功响应)时,解析响应数据。 常用库和插件 基于 XHR 封装的库 jquery:一个 JavaScript 库,提供了用于处理 DOM 操作、事件处理和 XHR 请求的便捷方法。

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

    油猴脚本重写fetch和xhr请求

    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 query") { this.addEventListener("readystatechange", function () { if (this.readyState === 4) query") { this.addEventListener("readystatechange", function () { if (this.readyState === 4)

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

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

    (1)异步请求的函数封装 /* * XHR连接对象 * 把请求的函数做成一个序列,按照执行序列来完成每一个序列项的任务 * * */ (function () { //(1)一个request请求 //设置浏览器每隔半秒执行一次函数 var poll=window.setInterval(function () { //4表示 :交互完成 if(o && o.readyState==4){ //这种写法类似长连接的写法,如果不成功总是请求你(半秒请求一次) callBack(o); } } },500) } //(2)获取XHR handleReadyState(http,callback);//回掉连接直到成功 http.send(postData||null); } })(); //(4)

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

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

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

    63420编辑于 2023-01-13
  • 来自专栏E条咸鱼

    rc4+ctf常用编码加密shellcode

    前言 本文不会解释rc4加密是什么,以及ctf编码在我的理解中为一个大类,并非单独一种编码形式,当然不管是rc4还是ctf编码,其宗旨都是为了使字符串变得“毫无意义”从而达成无法被杀软正确的检查出是shellcode 其实这篇文章更多的算是踩坑记录,因为本身代码的实现复制粘贴即可,讲加密代码的原理也大可不必,不可逆就行了。 目前针对rc4网上有不同的写法,主要根本是环境的不同,分别有 Python2 Python3 经过测试,Python3在脚本中计算rc4存在问题,常常导致过长的字符串加密后就无法还原,所以按照我看的某篇文章的说法是 ,以此来减少特征,不是完全赞同,但是也没什么反驳的例子吧 有了上面的加密代码后,直接用即可 def kaisa_jiemi(s,k): lower=string.ascii_lowercase ,除了maketrans中before和after的位置发生变化外,前面string.和''.也有区别 这是因为我运行的平台,生成shellcode.py的平台是python3的,所以加密部分的代码是按照

    1.6K20编辑于 2022-10-27
  • 来自专栏大猪的笔记

    python3 实现rc4 加密

    实现rc4库 非常简洁,看代码吧 import base64 import hashlib import os from io import BytesIO class RC4(object): yield s[(s[i] + s[j]) % 256] def encrypt(in_stream: BytesIO, out_stream: BytesIO, pwd: str): rc4_ cryptor = RC4(pwd) rc4_cryptor.encode(in_stream, out_stream) def encrypt_str(data: str, pwd: str

    1.6K20发布于 2019-11-22
  • 来自专栏大数据实战演练

    Java版SMS4加密解密算法

    放弃不难,但坚持很酷~ 前言 最近工作中需要实现HBase自定义扩展sms4加密,今天就先来说一下Java版的SMS4加密解密算法的具体实现。 加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。 在SMS4的基础类中,你会看到加密和解密的基础函数是同一个(本篇文章中的sms4KeyExt()方法),只是需要一个int型的标志位来判断是加密还是解密。 package com.xxx.sms4; import java.util.Arrays; /** * @author CREATE_17 * @description: SMS4加密与解密算法实现 ,程序会对明文进行加密,然后在对密文进行解密。直接运行程序,得到加密与解密结果,如下图所示: ?

    2.9K40发布于 2019-04-17
领券