爬虫中常见的加密算法Base64伪加密,MD5加密【DES/AES/RSA/SHA/HMAC】及其代码实现(一)
目录
基础常识
Base64伪加密
python代码实现
摘要算法
1. MD5
1.1 JavaScript 实现
1.2 Python 实现
2. SHA
2.1 JavaScript 实现
2.2 Python 实现
2.3 sha系列特征
3. HMAC
3.1 JavaScript 实现
3.2 Python 实现
对称加密
一. 常见算法归纳
1. 工作模式归纳
1. ECB模式
2. CBC模式
3. CFB模式
4. OFB模式
5. CTR模式
6. 总结
二. DES算法
1. JavaScript 实现
2. Python 实现
基础常识
首先我们需要明白的是,什么是加密和解密?顾名思义加密(Encryption): 将明文数据变换为密文的过程 解密(Decryption): 加密的逆过程,即由密文恢复出原明文的过程。
加密和解密算法的操作通常都是在一组密钥的控制下进行的,分别成为是加密密钥(Encryption Key)和解密密钥(Decryption Key),如下图所示
而加密算法当中又分为是对称加密和非对称加密以及散列算法,其中
对称加密:即加密与解密时使用的是相同的密钥,例如RC4、AES、DES等加密算法 非对称加密:即加密与解密时使用不相同的密钥,例如RSA加密算法等 散列算法:又称为是哈希函数。对不同长度的输入消息产生固定的输出,该输出值就是散列值
Base64伪加密
Base64严格意义上来说不算做事加密的算法,只是一种编码的方式,它是一种用64个字符,分别是A-Z、a-z、0-9、+、/这64个字符,实现对数据的编码,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。我们使用Python来对任意网址进行Base64的编码操作,代码如下
python代码实现
import base64# 想将字符串转编码成base64,要先将字符串转换成二进制数据
url = "www.baidu.com"
bytes_url = url.encode("utf-8")
str_url = base64.b64encode(bytes_url) # 被编码的参数必须是二进制数据
print(str_url)
output
b'd3d3LmJhaWR1LmNvbQ=='
那么同样地,我们也可以对其进行解码的操作,代码如下
url = "d3d3LmJhaWR1LmNvbQ=="
str_url = base64.b64decode(url).decode("utf-8")
print(str_url)
摘要算法
在 JavaScript 中和 Python中的基本实现方法,遇到 JS 加密的时候可以快速还原加密过程,有的网站在加密的过程中可能还经过了其他处理,但是大致的方法是一样的。
消息摘要算法/签名算法:MD5、SHA、HMAC
1. MD5
简介:全称MD5 消息摘要算法,又称哈希算法、散列算法,由美国密码学家罗纳德·李维斯特设计,于 1992 年作为 RFC 1321 被公布,用以取代 MD4 算法。摘要算法是单向加密的,也就是说明文通过摘要算法加密之后,是不能解密的。摘要算法的第二个特点密文是固定长度的,它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。之所以叫摘要算法,它的算法就是提取明文重要的特征。所以,两个不同的明文,使用了摘要算法之后,有可能他们的密文是一样的,不过这个概率非常的低。
1.1 JavaScript 实现
地址:汽车之家
安装对应的模块
// 在依赖项中添加包: --save npm install crypto-js --save
使用案例
// 引用 crypto-js 加密模块
var CryptoJS = require('crypto-js')
function MD5Test() {var text = "I love python!"return CryptoJS.MD5(text).toString()
}
console.log(MD5Test())
1.2 Python 实现
import hashlib
def md5_test2():md5 = hashlib.md5()md5.update('python'.encode('utf-8'))print(md5.hexdigest())
if __name__ == '__main__':md5_test2()
总结:MD5哈希视为字符串,而是将其视为十六进制数, MD5哈希长度为128位,通常由32个十六进制数字表示。
2. SHA
简介:全称安全哈希算法,由美国国家安全局(NSA)所设计,主要适用于数字签名标准里面定义的数字签名算法,SHA 通常指 SHA 家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384、SHA-512,SHA 是比 MD5 更安全一点的摘要算法,MD5 的密文是 32 位,而 SHA-1 是 40 位,版本越强,密文越长,代价是速度越慢。
2.1 JavaScript 实现
// 引用 crypto-js 加密模块
var CryptoJS = require('crypto-js')
function SHA1Encrypt() {var text = "I love python!"return CryptoJS.SHA1(text).toString();
}
console.log(SHA1Encrypt())
2.2 Python 实现
import hashlib
def sha1_test2():sha1 = hashlib.sha1()sha1.update('I love python!'.encode('utf-8'))print(sha1.hexdigest())
if __name__ == '__main__':sha1_test2()
2.3 sha系列特征
sha1:23c02b203bd2e2ca19da911f1d270a06d86719fb
sha224:1ffeffcbe2707dc5d1c10df619203c1a3b620c70394b3c4c106d92e6
sha256:c3a845a318cd654749ea4db6f4d5f9cb5c6e5b0cade46d9dc04af46d32049c7c
sha512:af47f324b77a4885748bfc3f0d9b5a846c0153c589852bb3f185ab6e7a600547b818ab994776e8d24584457f9aac84246b0de971584cebbdd96aa1aee6630f9f
sha1 --》 40
sha224 --》 56
sha256 --》 64
sha512 --》 128
总结:根据长度进行定位、主要还是要去JavaScript里面下断点调试分析
3. HMAC
简介:全称散列消息认证码、密钥相关的哈希运算消息认证码,于 1996 年提出,1997 年作为 RFC 2104 被公布,HMAC 加密算法是一种安全的基于加密 Hash 函数和共享密钥的消息认证协议,它要求通信双方共享密钥 key、约定算法、对报文进行 Hash 运算,形成固定长度的认证码。通信双方通过认证码的校验来确定报文的合法性。
参考资料:
- 百科:hmac_百度百科
3.1 JavaScript 实现
// 引用 crypto-js 加密模块
var CryptoJS = require('crypto-js')
function HMACEncrypt() {var text = "I love python!"var key = "secret" // 密钥文件return CryptoJS.HmacMD5(text, key).toString();// return CryptoJS.HmacSHA1(text, key).toString();// return CryptoJS.HmacSHA256(text, key).toString();
}
console.log(HMACEncrypt())
3.2 Python 实现
import hmac
def hmac_test1():message = 'I love python!'.encode()key = b'secret'md5 = hmac.new(key, message, digestmod='MD5')print(md5.hexdigest())
def hmac_test2():key = 'secret'.encode('utf8')sha1 = hmac.new(key, digestmod='sha1')sha1.update('I love '.encode('utf8'))sha1.update('Python!'.encode('utf8'))print(sha1.hexdigest())
if __name__ == '__main__':hmac_test1() # 9c503a1f852edcc3526ea56976c38edfhmac_test2() # 2d8449a4292d4bbeed99ce9ea570880d6e19b61a
对称加密
对称加密(加密解密密钥相同):DES、3DES、AES、RC4
简介
对称式加密就是加密和解密使用同一个密钥。信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行加解密了。对称加密算法用来对敏感数据等信息进行加密。
一. 常见算法归纳
DES:56位密钥,由于密钥太短,被逐渐被弃用。
AES:有128位、192位、256位密钥,现在比较流行。密钥长、可以增加破解的难度和成本。
1. 工作模式归纳
1. ECB模式
- 全称Electronic Codebook模式,译为电子密码本模式,每个数据块独立进行加/解密
- ECB是最简单的工作模式,原理就是将明文分组,对每一组分别单独加密,加密后的每组密文之间没有联系,在将每一组加密的结果进行拼接
2. CBC模式
- 全称Cipher Block Chaining模式,译为密文分组链接模式
- 这种模式的核心思想是每一个明文分组在被加密之前要与前一个的密文分组进行异或运算,即每一组的加密结果会参与下一个分组的加密,因此第一个分组加密需要有一个初始化向量(IV)参与。
- 最后将每个密文分组按顺序合并起来就得到加密结果
- CBC模式是分组加密中使用最多的模式。
3. CFB模式
- 全称Cipher FeedBack模式,译为密文反馈模式
- 这种工作模式吸收了流加密(流加密可以逐个加密数据,因此适用于流式数据,无需等待整个块加密完成)的特点,可以理解成实现了流加密的CBC 模式
- 加密时,首先对初始化向量(IV)加密,用加密的结果与第一个明文分组异或,得到第一个密文分组
- 然后将此密文分组进行加密(加密前要进行移位处理),将加密结果与第二个明文分组异或
4. OFB模式
- 全称Output Feedback模式,译为输出反馈模式。
- OFB模式与CFB模式类似,区别在于使用上一个分组的密码序列加密生成当前分组的密码序列
5. CTR模式
- 全称Counter模式,译为计数器模式。
- CTR模式与CFB、OFB模式为同一类。但它是通过将逐次累加的计数器进行加密来生成密码序列
- 也就是说,每一个的密文分组是通过将计数器加密得到的密码序列与明文分组进行异或而得到的
6. 总结
二. DES算法
简介:DES是一种分组加密算法,他以64位为分组对数据加密。64位一组的明文从算法的一端 输入,64位的密文从另一端输出。DES是一个对称算法:加密和解密用的是同一个算法(除 密钥编排不同以外)。
密钥的长度为56位(密钥通常表示为64位的数,但每个第8位都用作奇偶检验,可以忽 略)。密钥可以是任意的56位数,且可以在任意的时候改变。
DES算法的入口参数有3个:Key,Data,Mode。其中Key为8个字节共64位,是DES算法 的工作密钥;Data也为8个字节64位,是要被加密或解密的数据:Mode为DES的工作方式,有 两种:加密或解密。
DES算法的工作过程:若Mode为加密,则用Key对数据Data进行加密,生成Data的密码 形式(64位)作为DES的输出结果;若Mode为解密,则用Key对密码形式的数据Data解密,还 原为Data的明码形式(64位)作为DES的输出结果。 简单地说,算法只不过是加密的一种基本技术,DES基本组建分组是这些技术的一种组合 ,他基于密钥作用于明文,这是众所周知的轮(round)。DES有16轮,这意味着要在明文分 组上16次实施相同的组合技术。
- mode 支持:CBC,CFB,CTR,CTRGladman,ECB,OFB 等。
- padding 支持:ZeroPadding,NoPadding,AnsiX923,Iso10126,Iso97971,Pkcs7 等。
参考资料:
- RFC 4772:RFC 4772 - Security Implications of Using the Data Encryption Standard (DES)
- DES 维基百科:https://en.wikipedia.org/wiki/Data_Encryption_Standard
1. JavaScript 实现
DES算法的入口参数有3个
- key、DATA、Mode、padding
- key为7个字节共56位,是DES算法的工作密钥
- Data为8个字节64位,是要被加密或被解密的数据
- Mode为DES的工作方式
- padding为填充模式,如果加密后密文长度如果达不到指定整数倍(8个字节,16个字节),填充
// 引用 crypto-js 加密模块
var CryptoJS = require('crypto-js')
function desEncrypt() {var key = CryptoJS.enc.Utf8.parse(desKey),iv = CryptoJS.enc.Utf8.parse(desIv),srcs = CryptoJS.enc.Utf8.parse(text),// CBC 加密模式,Pkcs7 填充方式encrypted = CryptoJS.DES.encrypt(srcs, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});return encrypted.toString();
}
function desDecrypt() {var key = CryptoJS.enc.Utf8.parse(desKey),iv = CryptoJS.enc.Utf8.parse(desIv),srcs = encryptedData,// CBC 加密模式,Pkcs7 填充方式decrypted = CryptoJS.DES.decrypt(srcs, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});return decrypted.toString(CryptoJS.enc.Utf8);
}
var text = "I love Python!" // 待加密对象
var desKey = "6f726c64f2c2057" // 密钥
var desIv = "0123456789ABCDEF" // 初始向量
var encryptedData = desEncrypt()
var decryptedData = desDecrypt()
console.log("加密字符串: ", encryptedData)console.log("解密字符串: ", decryptedData)
// 加密字符串: +ndbEkWNw2QAfIYQtwC14w==
// 解密字符串: I love Python!
2. Python 实现
pip install pyDes
import binascii
# 加密模式 CBC,填充方式 PAD_PKCS5
from pyDes import des, CBC, PAD_PKCS5
def des_encrypt(key, text, iv):k = des(key, CBC, iv, pad=None, padmode=PAD_PKCS5)en = k.encrypt(text, padmode=PAD_PKCS5)return binascii.b2a_hex(en)
def des_decrypt(key, text, iv):k = des(key, CBC, iv, pad=None, padmode=PAD_PKCS5)de = k.decrypt(binascii.a2b_hex(text), padmode=PAD_PKCS5)return de
if __name__ == '__main__':secret_key = '12345678' # 密钥text = 'hello world' # 加密对象iv = secret_key # 偏移量secret_str = des_encrypt(secret_key, text, iv)print('加密字符串:', secret_str)clear_str = des_decrypt(secret_key, secret_str, iv)print('解密字符串:', clear_str)
# 加密字符串:b'302d3abf2421169239f829b38a9545f1'
# 解密字符串:b'I love Python!'
- 由于库和版本的不同,同样的加密算法在不一样的语言里结果可能不一致,做逆向时最好是选用node来加密网站数据,不使用python来进行加密
相关文章:
爬虫中常见的加密算法Base64伪加密,MD5加密【DES/AES/RSA/SHA/HMAC】及其代码实现(一)
目录 基础常识 Base64伪加密 python代码实现 摘要算法 1. MD5 1.1 JavaScript 实现 1.2 Python 实现 2. SHA 2.1 JavaScript 实现 2.2 Python 实现 2.3 sha系列特征 3. HMAC 3.1 JavaScript 实现 3.2 Python 实现 对称加密 一. 常见算法归纳 1. 工作模式归纳 …...
C语言数据在内存中的存储超详解
文章目录 1. 整数在内存中的存储2. 大小端字节序和字节序判断2. 1 什么是大小端?2. 2 为什么会有大小端?2. 3 练习 3. 浮点数在内存中的存储3. 1 一个代码3. 2 浮点数的存储3. 2. 1 浮点数存的过程3. 2. 2 浮点数取的过程3. 3 题目解析 1. 整数在内存中的…...
【大模型】【NL2SQL】基本原理
三个输入: prompt 用户输入 数据库表格等信息 sql 语句...
RK3568平台(显示篇)DRM vop驱动程序分析
一.设备树配置 vopb: vopff900000 {compatible "rockchip,rk3399-vop-big";reg <0x0 0xff900000 0x0 0x2000>, <0x0 0xff902000 0x0 0x1000>;interrupts <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH 0>;assigned-clocks <&cru ACLK_VOP0>, &…...
vue3 动态加载组件
//模版调用 <component :is"geticon(item.icon)" />//引入 import { ref, onMounted, markRaw, defineAsyncComponent } from vue;//异步添加icon图标组建 function geticon(params) {const modules import.meta.glob(../components/icons/*.vue);const link …...
Latex on overleaf入门语法
Latex on overleaf入门语法 前言基本结构序言 简单的格式化命令添加注释:%加粗、斜体、下划线有序列表、无序列表 添加图片图片的标题、标签和引用 添加表格一个简单的表格为表格添加边框标题、标签、引用 数学表达式基本的数学命令 基本格式摘要段落、新行章节、分…...
使用Echarts来实现数据可视化
目录 一.什么是ECharts? 二.如何使用Springboot来从后端给Echarts返回响应的数据? eg:折线图: ①Controller层: ②service层: 一.什么是ECharts? ECharts是一款基于JavaScript的数据可视化图标库,提供直观&…...
一文搞懂GIT
文章目录 1. GiT概述1.1 GIT概述1.2 GIT安装 2. GIT组成3. GIT基本命令3.1 基本命令3.2 分支操作3.3 远程操作3.4 标签操作3.5 其他命令 1. GiT概述 1.1 GIT概述 Git 是一个分布式版本控制系统,被广泛应用于软件开发中。 Git 具有众多优点,比如&#…...
jQuery入门(四)案例
jQuery 操作入门案例 一、复选框案例 功能: 列表的全选,反选,全不选功能实现。 实现步骤和分析: - 全选 1. 为全选按钮绑定单击事件。 2. 获取所有的商品项复选框元素,为其添加 checked 属性,属性值为 true。 -…...
揭秘MITM攻击:原理、手法与防范措施
中间人攻击发生时,攻击者会在通讯两端之间插入自己,成为通信链路的一部分。攻击者可以拦截、查看、修改甚至重新定向受害者之间的通信数据,而不被双方察觉。这种攻击常见于未加密的Wi-Fi网络、不安全的HTTP连接或者通过社会工程学手段诱导受害…...
【YOLOv8】一文全解+亮点介绍+训练教程+独家魔改优化技巧
前言 Hello,大家好,我是cv君,最近开始在空闲之余,经常更新文章啦!除目标检测、分类、分隔、姿态估计等任务外,还会涵盖图像增强领域,如超分辨率、画质增强、降噪、夜视增强、去雾去雨、ISP、海…...
创建mvp ubo(uniform buffer object)
创建过程: 创建一个uniform buffer查找buffer memory requirements分配、绑定buffer memorymap buffer memory拷贝mvp data to buffer memoryunmap buffer memory 示例代码: glm::mat4 projection glm::perspective(glm::radians(45.0f), 1.0f, 0.1f…...
1.GPIO
理论说明 输入 上拉输入:拉高电平 下拉输入:拉低电平 浮空输入:不拉高也不拉低电平 输出 开漏输出:不能输出高电平(P-MOS不可用,则只能低电平) 推挽输出:可输出高低电平 输出速率…...
C++必修:STL之vector的了解与使用
✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C学习 贝蒂的主页:Betty’s blog 1. C/C中的数组 1.1. C语言中的数组 在 C 语言中,数组是一组相同类型…...
【MySQL】索引 【上】 {没有索引的查询/磁盘/mysql与磁盘IO/初识索引}
文章目录 1.没有索引存在的问题2. 认识磁盘MySQL与存储MySQL与磁盘交互基本单位建立共识图解IO认识索引 在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物…...
GO goroutine状态流转
Gidle -> Grunnable newproc获取新的goroutine,并放置到P运行队列中 这也是go关键字之后实际编译调用的方法 func newproc(fn *funcval) {// 获取当前正在运行中的goroutinegp : getg()// 获取调用者的程序计数器地址,用于调试和跟踪pc : getcallerp…...
DLMS/COSEM中的信息安全:DLMS/COSEM安全概念(上)
DLMS/COSEM中的信息安全描述并规定: ——DLMS/COSEM安全概念; ——选择加密算法; ——安全密钥; ——使用加密算法进行实体认证、xDLMS APDU保护和COSEM数据保护。 1.综述 DLMS/COSEM服务器的资源(COSEM对象属性和方法)可以由在应用连接内的DLMS/COSEM客户机访问。 在AA…...
C语言第九天笔记
数组的概念 什 么是数组 数组是 相同类型, 有序数据的集合。 数 组的特征 数组中的数据被称为数组的 元素,是同构的 数组中的元素存放在内存空间里 (char player_name[6]:申请在内存中开辟6块连续的基于char类 型的变量空间) 衍生概念&…...
智慧环卫可视化:科技赋能城市清洁管理
图扑智慧环卫可视化通过实时监控、数据分析和智能调度,提高环卫作业效率,优化资源配置,提升城市清洁水平,实现城市管理的精细化和现代化。...
【力扣】SQL题库练习5
高级查询和连接 1341.电影评分 表:Movies ------------------------ | Column Name | Type | ------------------------ | movie_id | int | | title | varchar | ------------------------ movie_id 是这个表的主键(具有唯一值的列)。 ti…...
永结无间Ⅸ--你不需要LLM Agent
人们将目光锁定在下一个闪亮的事物上。FOMO 是人性的一部分。这也适用于企业。就像数据科学成为每个企业分析功能的热潮一样,Agentic Architecture 是大多数 AI 雷达上的热门目标。 但您是否考虑过您是否真的需要它? 实际情况是,您不需要 A…...
Simulink|基于粒子群算法的永磁同步电机多参数辨识
目录 主要内容 模型研究 结果一览 下载链接 主要内容 仿真程序参考文献《改进粒子群算法的永磁同步电机多参数辨识》,采用粒子群算法与simulink模型结合的方式,对永磁同步电机进行多参数辨识。程序以定子绕组电阻、d轴电感、q轴电感和永磁…...
程序如何自动点击亚马逊商户后台的“邀请评论”按钮
要在亚马逊上自动点击“邀请评论”按钮,可以使用自动化脚本来实现。由于你希望自动化操作,我提供一个示例代码,使用 Selenium WebDriver 来执行这个任务。Selenium 是一个流行的浏览器自动化工具,能够模拟用户操作,例如…...
大模型算法面试题(十八)
本系列收纳各种大模型面试题及答案。 1、P-tuning v2 思路、优缺点是什么 P-tuning v2是清华大学自然语言处理实验室(THUDM)等研究机构提出的一种新的预训练模型优化方法,主要关注如何通过动态构建任务相关的提示序列来引导预训练模型进行更…...
手机在网状态接口如何对接?(二)
一、什么是手机在网状态? 传入手机号码,查询该手机号的在网状态,返回内容有正常使用、停机、在网但不可用、不在网(销号/未启用/异常)、预销户等多种状态。 二、手机在网状态使用场景? 1.用户验证与联系…...
力扣-3232. 判断是否可以赢得数字游戏
给你一个 正整数 数组 nums。 Alice 和 Bob 正在玩游戏。在游戏中,Alice 可以从 nums 中选择所有个位数 或 所有两位数,剩余的数字归 Bob 所有。如果 Alice 所选数字之和 严格大于 Bob 的数字之和,则 Alice 获胜。 如果 Alice 能赢得这场游…...
Table SQL connectors以及FileSystem、JDBC connector
目录 Flink支持的连接器 如何使用连接器 FileSystem SQL Connector 文件格式 分区文件 Source 目录监控 元数据 Streaming Sink 滚动策略 文件合并 JDBC SQL Connector 依赖 如何创建JDBC表 连接器配置 案例 pom依赖 代码 测试 Flink的Table API和SQL…...
Animate软件基础:“分散到图层”创建的新图层
FlashASer:AdobeAnimate2021软件零基础入门教程https://zhuanlan.zhihu.com/p/633230084 FlashASer:实用的各种Adobe Animate软件教程https://zhuanlan.zhihu.com/p/675680471 FlashASer:Animate教程及作品源文件https://zhuanlan.zhihu.co…...
ffmpeg命令-Windows下常用最全
查询命令 参数 说明 -version 显示版本。 -formats 显示可用的格式(包括设备)。 -demuxers 显示可用的demuxers。 -muxers 显示可用的muxers。 -devices 显示可用的设备。 -codecs 显示libavcodec已知的所有编解码器。 -decoders 显示可用…...
反序列化漏洞靶机实战-serial
一.安装靶机 下载地址为https://download.vulnhub.com/serial/serial.zip,安装好后开启靶机,这里并不需要我们去登录,直接扫描虚拟机nat模式下c网段的ip,看看哪个的80端口开放,然后直接去访问 二.查找cookie 访问靶…...
怎样用微信做购物网站/百度天眼查公司
在Java中,你可以使用指纹算法来计算图像相似度。 一种简单的指纹算法是哈希算法,它通过计算图像的哈希值来表示图像。可以使用哈希算法,如感知哈希算法,来计算图像的哈希值。然后,您可以通过计算两个图像的哈希值的汉明…...
浙江省城乡建设厅官网/独立站seo建站系统
很多朋友可能都会纳闷,我们的手机明明都是国产的,可为什么手机里的文件夹都是英文的呢?有时候想要删除一些无用文件夹释放一些内存,但是又因为看不懂无从下手。不要着急,今天小编就给大家科普一波。一、为何都是英文名…...
建影楼网站多少钱/宁波seo网络推广咨询价格
你对编程社区(像讨论版,论坛和公告板等)的选择往往决定你所学习的语言的进度。我也说不出为什么,但是实时的社区会给你提供一种独一无二的学习的经验。 问题在于事实上有大量的论坛可供选择,同时五分之一的网络管理员…...
织梦网站地图生成/百度收录提交网站后多久收录
最近遇到考题:一个互联网产品如何从无到有聚集用户?对此,我分了3个阶段来进行论述。(中间加了一些孙子兵法的观点,学习孙子兵法,对做产品也有一定的指导思想。希望更多的人能学习国学,爱国学。多学国学,就…...
wordpress侧边栏图片/东莞互联网推广
编写一个word2htm.vbs,然后把它拖放到存放word文档内,点按两下word2htm.vbs,目录内的所有文档会自动转换成htm文件。word2htm.vbs的编码如下。Set fsObject CreateObject ("Scripting.FileSystemObject")myDocDirfsObject.GetAbsolutePathName("&qu…...
省建设厅网站梁作庆/百度云搜索
是因为ID类型不对的缘故。 我这是因为传的是一个string类型的。...