双向证书认证用的少,但是还是有用处的,我还有 ET199 实体密码狗的案例,还没发出来。
有可能是的,我以前中耳炎导致鼓膜穿孔,就老感觉有声音。
实仓负的怎么没有,套的牢中牢。
这个人还真不知道,如果你说贾维斯,那我就明白了。
代沟就是这样的,他们那个时代结婚很简单,不需要多少钱,养小孩也是,现在没钱只能回村里,村里要求不高,但是村里好点的异性都润到城市里了,养小孩也不是有点钱就能养得起(养活和养好的区别),不结婚不生小孩后面可能最大的问题就是孤独,他们的思想还是老一套。

一般签名计算

带 policy 的签名计算
参考链接: https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/API/sig-v4-header-based-auth.html
伪代码: https://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/create-signed-request.html
原文地址:《Cloudflare 对象存储 R2 试用与签名计算》 https://mp.weixin.qq.com/s/Nban7LLnK-k_tjQdOYMwAw
if __name__ == '__main__':
account_id = 'cf 账户 ID'
access_key_id = 'R2key'
access_key_secret = 'R2secretkey'
bucket_name = '存储桶名字'
region='auto' # 地区:auto 就行
key ="文件名,不带存储桶名字,开头不带/"
# 如下
# key='xxx.jpg'
# 自定义域名,尾部不带/
mydomain = "自定义域名"
# 如
# mydomain="https://r2.xx.xx"
# expires 过期时间,单位秒,domain 自定义域名,isurl 是否直链,默认是
sign=SignUtil()
# 请求直链
print(sign.getSign(account_id,access_key_id,access_key_secret,region,bucket_name,key,expires=360))
# 请求 headers
print(sign.getSign(account_id,access_key_id,access_key_secret,region,bucket_name,key,expires=360,domain=mydomain))
# headers=sign.getSign(account_id, access_key_id, access_key_secret, region, bucket_name, key, expires=3600,isurl=False)
# print(headers)
# info=requests.get("https://xxx.r2.cloudflarestorage.com/xxx/xxx.jpg",headers=headers)
# print(info.status_code)
xxx 基本上都是个人信息,都隐去了,只实现了 GET、PUT,下载和上传的,其他都大差不多。
CanonicalQueryString = ''
CanonicalHeaders = 'host:'+host.replace("https://","") + '\n' + 'x-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\n' + 'x-amz-date:' + amzdate + '\n'
SignedHeaders = 'host;x-amz-content-sha256;x-amz-date'
canonical_request = HTTPMethod + '\n' + CanonicalUri + '\n' + CanonicalQueryString + '\n' + CanonicalHeaders + '\n' + SignedHeaders + '\n' + 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
headersSign = hashlib.sha256((canonical_request).encode('utf-8')).hexdigest()
signature = self.__getSignature(datestamp, amzdate, region, canonical_request, access_key_secret)
auth = 'AWS4-HMAC-SHA256 Credential=' + access_key_id + '/' + datestamp + '/'+region+'/s3/aws4_request' + ',SignedHeaders=host;x-amz-content-sha256;x-amz-date' + ', Signature=' + signature
headers = {
"Authorization": auth,
"host": "xxx.r2.cloudflarestorage.com",
"x-amz-content-sha256": 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
"x-amz-date": amzdate
}
return headers
def getSign(self,account_id,access_key_id,access_key_secret,region,bucket_name,key_name,expires=3600,isurl=True,domain=None):
host, CanonicalUri, amzdate, datestamp=self.__header(bucket_name,key_name,domain)
HTTPMethod = 'GET'
if isurl:
CanonicalQueryString = 'X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential='+access_key_id+'%2F' + datestamp + '%2F'+region+'%2Fs3%2Faws4_request&X-Amz-Date=' + amzdate + '&X-Amz-Expires='+str(expires)+'&X-Amz-SignedHeaders=host'
CanonicalHeaders = 'host:'+ host.replace("https://","") + '\n'
SignedHeaders = 'host'
canonical_request = HTTPMethod + '\n' + CanonicalUri + '\n' + CanonicalQueryString + '\n' + CanonicalHeaders + '\n' + SignedHeaders + '\n' + 'UNSIGNED-PAYLOAD'
headersSign = hashlib.sha256((canonical_request).encode('utf-8')).hexdigest()
signature=self.__getSignature(datestamp,amzdate,region,canonical_request,access_key_secret)
signtext = 'X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=' + access_key_id + '/' + datestamp + '/'+region+'/s3/aws4_request' + '&X-Amz-Date=' + amzdate + '&X-Amz-Expires='+str(expires)+'&X-Amz-SignedHeaders=' + SignedHeaders + '&X-Amz-Signature=' + signature
return host+CanonicalUri+'?'+signtext
else:
看哪种,我经常耳朵痒,上次去医院,医生说可能是真菌性外耳道炎,也没给我开药,我就想有时间彻底解决,耳朵痒太难受了。
@opsdian 主题里面少说了一个情况,值都是双引号包起来的,所以现在用这个正则是没问题的。
目前这个正则可以处理值里有空格的情况。比如
@timestamp="2025-12-15T05:50:17.047Z" proc_path="C:\Program Files (x86)\Google\GoogleUpdater\144.0.7529.0\updater.exe"
Program Files (x86)中有空格,主题里面少说了一个情况,值都是双引号包起来的。
值里面会出现空格也可能会有等于号(目前没发现等于号,但是空格是存在的),键不是固定的有很多不一样的名字,现在用的正则就是差不多这样,等于号是常量,前后用正则匹配。
看看是不是开了省内存模式,设置-性能-省内存模式
chrome://settings/performance
以前是一个电影创造梗、流行词、文化,现在很多电影是偷网络的梗缝合成烂梗再拿去电影院卖。
有这个需求,正好就了解一下简单的 C++(这里可能是 C 吧)DLL 编译。
串烧,那不是 DJ 时代的吗,音质要多拉有多拉,一两个小时都正常,网上卖 U 盘也是,抖音热门音乐 DJ、各种串烧,不知道卖 U 盘的那些音质怎么样,以前在 DJ 网站下载的巨拉。我这就有一个,59 分钟不到 100M
提取地址: https://wiki.shikangsi.com/file/download?code=NXSImiHz
提取码:NXSImiHz
文件名:年度盛宴实力女 MC 助阵精品中文 dj 串烧.mp3
安卓也有,设置后台不限制就会显示 XX 应用在后台,todesk 安卓 APP 打开后就有个通知:ToDesk 服务正在运行(不过可以清除)
这不是有吗?其实很多 AFF 都喜欢藏着掖着,不一定按要求发,而且论坛时间久了板块的概率都很模糊,这边有 AI 所以分类好处理点,没有 AI 辅助对于帖子分类来说很依赖运营,消耗很多精力。
已经很老了,快十年了,现在应该很少有这种问题,这里这是分享一下一些思路。
并没有,我通过通知点开(https://2libra.com/post/forum-function/e70ZnKi?commentId=0a52d5e2-1e39-4d18-8221-9a1de1e52d0f)还是有未读,是因为我用滚轮打开(新标签页打开)的原因?
我用的自己的( https://pic.mxpy.cn ),也有白嫖 360、百度的( https://pic.shikangsi.com )
这是白帽专场的其中一个 PPT,挑了一个内容多点的,还有专业场的,需要的可以留言。
有新的,新的太贵了,我用的旧版破解版,goaccess 用过,上次出来的报告 IP 都错了,少了前面一位。
我在想他们自己怎么处理日志,难道他们只分发,自己不考虑处理?如果自己处理,那怎么分割的。
确实,目前两种方法都是有使用场景的。
我也是比较喜欢这种可以纯离线使用的软件,而且数据还方便备份和迁移。
可以说是堪称骨灰级了,那时候才接入互联网没几年。
那就不是很清楚了,可能是自动播放到高帧率视频了?
这个网站之前见到过,估计也是你发的,忘了在哪看到的
thunderbird 好像有 rss 功能?我记不清了,可以看看。
网上有个合集,几百个 jar 游戏,可以搜一下看看。
缺少了按键的实体感。
考虑到可能有些朋友访问 apkpure 很慢之类的问题,我把我现在用的 apk 提取上传了一下。
提取地址: https://wiki.shikangsi.com/file/download?code=GQVd1lop
提取码:GQVd1lop
安恒的可能不是单独的软件,好像是个类似于电脑管家的安装包,360 好像没有打算出单独版本。
https://bbs.360.cn/thread-16166543-1-1.html
信息安全,什么都搞一下,渗透测试、编程开发这些。
没注意到这个功能,后面可以试试。
OpenStick 项目 wiki: https://www.kancloud.cn/handsomehacker/openstick/2636505
OpenStick 项目 GitHub: https://github.com/OpenStick/OpenStick
正文长度超出限制,一楼接上
下面是我们算的
params:VQUaeNYAiiO2vBViJWoEA0DB61QPUagi1X+1jKmKGj8c51JMIP6QOzNoQuYyEBzF7n3D7y1pKscTrtC+I/XBJSyzUk4GtwqDvK/+GtBI8tSHMdvusxZldr0AYDoQa0OSVg2Z3RiGYq1BB1QYwC5w92euP0X+/GC/GzpswedjhcN2J2X7wh0eET7ZpBZqxuhDFFKVdfrsnnU+AgriW8oksegaHxVnXGSmAiTWn2qACQSK1CCZG7IfCc/z5JObFFqf2QZ96PdFkOhZrwSn5NiQjV2plHdCfXlJf67ocnohv/VLCzeIBtueO4jgGIOLkBWSLk0pUJCWBrXzPoaRb25jjj60IQ59KQs/OX/+n6dgS/U=
encSecKey:1601e9c737ce7b7d65ee42c1e391cb162a030c5abe5306bf1e52e35c10ea88663bb5839571a3b79b212ffbdc583f5381ccdbd1d384ad25ff0289651aa925e319fdaa892743c360f560eb9b1282b3bc2ca209f8006f0b62e911fc0ab8b8e838329360e661e4d4f8d3b1c2ac11c9ca44ff2cee50f054eb44a7a43b1714fb625a9c
看看网站请求的

可以看到是一样的,我们可以尝试重发一下请求。

成功获得数据。
既然是从 0 开始,那还要解决 d 参数的问题
{"rid":"R_SO_4_2102785224","threadId":"R_SO_4_2102785224","pageNo":"2","pageSize":"20","cursor":"1703117062380","offset":"0","orderType":"1","csrf_token":"9ad1ccb7e4ac0d59178520cd842b951d"}
这里面最主要的是 rid、threadId、cursor,这里前两个是一样的,而第三个实际是一样就能看出来是时间戳。
那么我们看看 rid 怎么来的。
网址:https://music.***.com/#/song?id=2102785224
rid:R_SO_4_2102785224
很明显 rid 后面的数字就是 songId,那么我们一样搜索 R_S0_4_

其实还是在 core 文件里面,这里已经不需要再继续看了,其实已经定义了歌曲的前缀就是固定的。

上图是最终的效果,中间还有实现的过程,这个下次有空再说吧。
推荐阅读:QQ 音乐 Sign 签名算法的 VMP 分析
@Jimmy 今天换电脑登录又想起来一个问题,之前也遇到了,就是登录页回车没反应,习惯了输完密码回车登录,估计别人也提过吧。
因为前端计算,又是遍历的计算,速度有点慢,刷新只会导致重新计算,所以等它自动计算完最好,通过后会把 token 存到缓存里面,再打开就不会跳了。
QQ 浏览器工具箱也有很多实用工具: https://tool.browser.qq.com/
应该是 nodejs 驱动的 express、next.js 这些。
浏览器就够了,做 APP 原生的要 api,非原生也是网页,还不如直接用浏览器。
这价格刚开的时候还可以,一般刚开都是 35-45,可以去小黄鱼发发。