@张小强,一个生成浏览器id的开源库:https://github.com/fingerprintjs/fingerprintjs
来自 https://zhuanlan.zhihu.com/p/400206593
尝试 1:IP 是否会影响指纹
结果:通过 VPN 或者连接不同的网络,指纹的生成是稳定的,直接切换 IP 并不影响指纹。可以理解,因为 IP 是非常不稳定的,用户很容易切换 IP,导致指纹变化。个人看法,IP 只是作为辅助手段进行校验,比如曾经有使用某个 IP 的历史记录,就可以佐证是之前生成的某个指纹,即使某些指标发生异动。
尝试 2:伪造某些指标是否会影响指纹
开源版:只要修改了提取的某个参数值,生成的指纹就会改变。
专业版:在 Chrome 的无痕模式下,通过插件(Fingerprint Spoofing)或者断点通过 Object.defineProperty 等方式修改某些指标的值是会影响指纹的。但在普通模式下,修改参数不会影响指纹。为什么呢,我们会很容易去想普通模式和隐身模式有什么不同。经过一些尝试后,笔者把目标锁定在 Cookie 、本地存储和缓存上,专业版生成指纹后,存储在 Cookie 和本地存储中,下一次生成指纹时,先判断是否已存在 Cookie,有且符合历史记录则直接取,没有再重新生成。
尝试 3:伪造某些指标并清除 Cookie 、本地存储和缓存后是否影响专业版指纹
结果:会影响,基本上可以实现随机指纹。所以,基本可以确认,当 Cookie 等内容存在时,能够匹配历史记录里的值就直接从里面取值,这样能在很大程度上保持指纹的稳定。在实验中,Cookie、本地存储和缓存都可以用于保持稳定。
之前用https://github.com/fingerprintjs/fingerprintjs,按浏览器区分
@主流网络,不考虑电费问题
我是晨曦,我喂自己袋盐!
@TabKey9,基本都是e5 有一个e3软路由
我是晨曦,我喂自己袋盐!
@无名啊,压缩成
webp,支持透明度
@无名啊,Linux的
unrar也可以流式调用:sudo apt install p7zip unrar 7z e -so test.7z.001 inner.rar | unrar x -si -o"+" .-so 解压到标准输出 -si 从标准输入读取压缩包 -o"+" 解压时覆盖所有已存在文件(没有该选项,文件重名时会退出)
师傅,你是做什么工作的?
修空调回头蓝衣服.mp4
小米MIX2s(白)
@艾木友尔尔巴,发现局域网内的其他设备
http://github.com/t924417424/CCMS
之前写过![]()
@TabKey9,我也是替别人问的,具体价格没说。帖子发给他看了。
@李沐沐,弄好多少钱?
能做些什么?能通俗解释一下吗?过于专业听不懂
小米8(白)
@上善若水,那肯定没问题。
但还是先来请教请教,看有没有减少写入损耗的方法。
比如,如果是
inner.zip的话,使用支持流式读取zip的工具(如bsdtar和busybox里的tar),稍稍动动手写一行代码(7z ... | bsdtar ...),就能避免巨大的写入损耗,说实在是有点爽的事情。。
修改HEVC视频的数据级别(有限、完全)
ffmpeg -i HLG测试:数据级别完全.mkv -c copy -bsf:v hevc_metadata=video_full_range_flag=0 HLG测试:数据级别完全,错标为有限.mkv ffmpeg -i HLG测试:数据级别有限.mkv -c copy -bsf:v hevc_metadata=video_full_range_flag=1 HLG测试:数据级别有限,错标为完全.mkv
@无名啊,那就放在别的设备上解压呗
@无名啊,我明白了,第一个压缩包中里面只有一个inner.rar压缩包所以要提取inner.rar中的文件只能整个解压inner.rar这个文件。
还有你干嘛那么心疼你的固态现在固态那么便宜,固态的售后不是按照质保期和twb那个先到按那个吗?你要是单纯为了减少固态硬盘的写入,那建议你买一块机械硬盘或者micro sd储存卡(终身固保)。
@无名啊,嗯,看起来C为并行执行优化留下了很多空间。
@老虎会游泳,我现在不想碰
restrict,因为:
- C/C++ 本身速度足够快,我目前不需要写性能极度敏感的代码
- 弄清楚编译器如何对待
restrict估计很耗时间。。除下列标出者,任意 C 运算符的运算数求值顺序,包括函数调用表达式的函数参数求值顺序,及任何表达式的子表达式求值顺序都是未指定的。编译器会以任意顺序对其求值,而且在同一表达式被再度求值时可选用另一种顺序。
C 中没有从左到右或从右到左求值的概念,这不会与运算符的从左到右或从右到左结合性混淆:表达式 f1() + f2() + f3() 被分析成 (f1() + f2()) + f3() ,因为 operator+ 的从左到右结合性,但运行时对 f3 的函数调用可以最先、最后,或在 f1() 与 f2() 之间求值。
未定义行为
- 若对一个标量对象的副效应与另一个对同一标量对象的副效应相对无顺序,则行为未定义。
i = ++i + i++; // 未定义行为 i = i++ + 1; // 未定义行为 f(++i, ++i); // 未定义行为 f(i = -1, i = -1); // 未定义行为
- 若一个标量对象上的副效应与另一个使用同一标量对象之值的值计算相对无顺序,则行为未定义。
f(i, i++); // 未定义行为 a[i] = i++; // 未定义行为
- 只要至少一个子表达式的排序容许这种无顺序副效应,就应用上述规则。
我记得,C 只保证在序列点后,所有副作用都被执行。
