-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Web 风控相关问题: buvid3, buvid4 获取及激活(ExClimbWuzhi 上传设备指纹消息) #933
Comments
还有办法能获取用户投稿嘛?我自己测试了好几遍都不行,接口是:/x/space/wbi/arc/search |
和本 issue 不相关, 去 #868, 贴上你的代码要不然谁知道发生了什么 |
buvid_fp 影响接口是否返回-352,需要解这个值 |
DIGHT_MAP 考虑把10去掉? |
Math.ceil(Math.random() * 16) 取值 0..=16, 就是有 "10" 的, 虽然看起来很像 0-9,a-f. 反而应该去掉 0 因为 Math.random() === 0 太罕见了概率无限接近 0 |
buvid_fp 的算法应该是拿浏览器指纹信息计算得到的指纹, 算法参考见 fingerprint2 库(2.1.4版本), 差不多弄清楚了 |
@cxw620 Thanks a lot. I've successfully activated the Here's the code: The response json is
So I guess activating successfully. However, I still cannot use it to invoke Anyone who knows how to deal with it, please kindly tell me how! Edit: Here's how I invoke |
User-Agent? I strongly suggest that you add any headers like a real browser will send. What's more, showing us codes is good, though an example your programme requesting and getting from upstream will help a lot, too. |
I’m afraid that it is not the cause for my managing to invoke with the cookies from browser, without anything except params, SESSDATA and buvid3. 塑料英语长难句翻译:我恐怕这不是原因,因为我用浏览器的cookie成功调用了,除了params, SESSDATA and buvid3,没有用其他参数。 |
I mean http headers, not cookie, I think you must know the difference. Do you think |
我的意思是:复制浏览器中的SESSDATA,buvid3,csrf,不需要UA,是可以成功调用点赞API的。这说明这个API是不检查UA的。 刚才我给激活buvid和点赞都带上了UA,依然不行。返回的还是-403 账号异常,操作失败。 用爬虫的SESSDATA和浏览器的buvid3请求,也是-403,说明二者是绑定的。于是猜测可能是激活的时候信息没带够(Cookie只带了buvid3 buvid4 buvid_fp _uuid)。 然后我又试着带上SESSDATA bili_jct DedeUserID等等,返回的是0,但依然无法用来点赞。实在没辙了。 |
这里都是国人...不用强迫自己翻译吧... |
哈哈,主要是我也习惯在GitHub用英语,关键是自己的英语比较塑料。刚写的那个句子ChatGPT都没翻译对,我的表达有问题,让大佬误解了,所以解释一下。 然后,破案了。是我测试用的视频的up主的问题,换个bv号就好了。 |
算是养成习惯, 不过不会的也不用勉强就是() |
看起来ExClimbWuzhi前的执行的过程是这样的 主站:www.bilibili.com 调用数次spi:api.bilibili.com/x/frontend/finger/spi ExClimbWuzhi:api.bilibili.com/x/internal/gaia-gateway/ExClimbWuzh 其中,b_lsid的来源依然不明,而第一次调用spi获得的buvid4的参数尾与spi的返回值不同,如果第一次是aaaaa-aaaaa,请求ExClimbWuzhi时就会变成aaaaa-bbbbb,这个差异是怎么造成的? |
algorithm in pure python: import time
import random
import struct
import io
MOD = 1 << 64
def rotate_left(x: int, k: int) -> int:
bin_str = bin(x)[2:].rjust(64, "0")
return int(bin_str[k:] + bin_str[:k], base=2)
def gen_uuid_infoc() -> str:
t = int(time.time() * 1000) % 100000
mp = list("123456789ABCDEF") + ["10"]
pck = [8, 4, 4, 4, 12]
gen_part = lambda x: "".join([random.choice(mp) for _ in range(x)])
return "-".join([gen_part(l) for l in pck]) + str(t).ljust(5, "0") + "infoc"
def gen_buvid_fp(key: str, seed: int):
source = io.BytesIO(bytes(key, "ascii"))
m = murmur3_x64_128(source, seed)
return "{}{}".format(
hex(m & (MOD - 1))[2:], hex(m >> 64)[2:]
)
def murmur3_x64_128(source: io.BufferedIOBase, seed: int) -> str:
C1 = 0x87C3_7B91_1142_53D5
C2 = 0x4CF5_AD43_2745_937F
C3 = 0x52DC_E729
C4 = 0x3849_5AB5
R1, R2, R3, M = 27, 31, 33, 5
h1, h2 = seed, seed
processed = 0
while 1:
read = source.read(16)
processed += len(read)
if len(read) == 16:
k1 = struct.unpack("<q", read[:8])[0]
k2 = struct.unpack("<q", read[8:])[0]
h1 ^= (rotate_left(k1 * C1 % MOD, R2) * C2 % MOD)
h1 = ((rotate_left(h1, R1) + h2) * M + C3) % MOD
h2 ^= rotate_left(k2 * C2 % MOD, R3) * C1 % MOD
h2 = ((rotate_left(h2, R2) + h1) * M + C4) % MOD
elif len(read) == 0:
h1 ^= processed
h2 ^= processed
h1 = (h1 + h2) % MOD
h2 = (h2 + h1) % MOD
h1 = fmix64(h1)
h2 = fmix64(h2)
h1 = (h1 + h2) % MOD
h2 = (h2 + h1) % MOD
return (h2 << 64) | h1
else:
k1 = 0
k2 = 0
if len(read) >= 15:
k2 ^= int(read[14]) << 48
if len(read) >= 14:
k2 ^= int(read[13]) << 40
if len(read) >= 13:
k2 ^= int(read[12]) << 32
if len(read) >= 12:
k2 ^= int(read[11]) << 24
if len(read) >= 11:
k2 ^= int(read[10]) << 16
if len(read) >= 10:
k2 ^= int(read[9]) << 8
if len(read) >= 9:
k2 ^= int(read[8])
k2 = rotate_left(k2 * C2 % MOD, R3) * C1 % MOD
h2 ^= k2
if len(read) >= 8:
k1 ^= int(read[7]) << 56
if len(read) >= 7:
k1 ^= int(read[6]) << 48
if len(read) >= 6:
k1 ^= int(read[5]) << 40
if len(read) >= 5:
k1 ^= int(read[4]) << 32
if len(read) >= 4:
k1 ^= int(read[3]) << 24
if len(read) >= 3:
k1 ^= int(read[2]) << 16
if len(read) >= 2:
k1 ^= int(read[1]) << 8
if len(read) >= 1:
k1 ^= int(read[0])
k1 = rotate_left(k1 * C1 % MOD, R2) * C2 % MOD
h1 ^= k1
def fmix64(k: int) -> int:
C1 = 0xFF51_AFD7_ED55_8CCD
C2 = 0xC4CE_B9FE_1A85_EC53
R = 33
tmp = k
tmp ^= tmp >> R
tmp = tmp * C1 % MOD
tmp ^= tmp >> R
tmp = tmp * C2 % MOD
tmp ^= tmp >> R
return tmp
if __name__ == '__main__':
# Test gen_uuid_infoc
print("gen_uuid_infoc():", gen_uuid_infoc())
# Test gen_buvid_fp
FP = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36falsezh-CN248162560,10802467,1089480Asia/Hong_Kongtruetruetruefalsefalsenot availableWin32PDF Viewer,Portable Document Format,application/pdf,pdf,text/pdf,pdf,Chrome PDF Viewer,Portable Document Format,application/pdf,pdf,text/pdf,pdf,Chromium PDF Viewer,Portable Document Format,application/pdf,pdf,text/pdf,pdf,Microsoft Edge PDF Viewer,Portable Document Format,application/pdf,pdf,text/pdf,pdf,WebKit built-in PDF,Portable Document Format,application/pdf,pdf,text/pdf,pdfcanvas winding:yes,canvas fp:data:image/png;base64,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YyIyrRpomaIUEe06be0q4kZjqy3XHpjRIjNz77n3npn73vs7X6YJ533O8/6ey6d/3nMIECBAgAABAgQIECBAgAABAgQIECBAgAABAu0mMO671Zv+GncBeuv8bvLX0S9u6gn0wSyyvtbZoE4IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQn8BEAXpPRNxWX8lxVm153J4462i1r4837XEKTSKwddaeOPvfzZxFbxbZEHMCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAikLjBRgJ6/xj3/DnoepDd+/ehJm+Plfzun8UIqPFpgZkQcK4by45M3xyv+2qxZjGSRLS7WgLsJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQmgLjBuh5q5WorBgN0Rvv/Pun3R5X7b+o8UIqNCxw7Vl3x/u3nN9wnUcK9GWRDTapljIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCYVoHJAvT8FPqOpnT3ppduiDW3djelliKNCSy/dENc97OmzCKLbMLfT2NNWk2AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGpF5g0AG3aKfTud98Z6z9/4dRvzxMfI7D0XXfGhs81Yxb9xwP0AcIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBoF4FqAXpzTqGf+u1NceDqJe2ClvQ+5n9rUxx8bTNmsTiLbCRpC80TIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEDgBIGqr+CuRGV1ROTfQ6//mrlrdxxd+Mz6C1jZNIFZO3fHsTMancVgFllf03pSiAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAi0gUEuA3pxT6D99/MG47PCpLbDnTm5hd2SVRsPz8O3zTv4J2TsBAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB9hWoGqDnW2/Kt9DfeuG98dXhc9uXMoGdXfPcDfGh33U32GlfFtlggzUsJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQMsJ1Bqg56fQ81e599S9g0Uf2xI7Vp1d93oLGxe48H3rY/japQ0UGsoi621gvaUECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBoWYGaAvS8+0pU8vD8trp3MnvTnjhy/oK611vYuMCcu/fEv5Y0MoPeLLKhxhtRgQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAq0nUHOAnrdeiUp+Cn1F3du4Zd7OuPzQwrrXP2bhzIg41rxy7VzpJyftjCsebMR+MIusr52J7I0AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgc4WKBqg569y31E32euW/Sq+cfOL615vYf0CPVf/NtZ+8/n1F4jFWWQjDay3lAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAi0tUChAz3dSiUp+Aj0/iV78mrtuX/zzktOKL7SiYYHHr90Xhy+u174/i2yg4R4UIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQAsLFA7Q871UopJ/Cz3/Jnrx65Z5u+LyQ2cUX2hF3QI/OWlXXPFgveZDWWS9dT/bQgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECCQiUG+Anr/KPQ/R87/FrqXvGI47vtRVbJG7GxJ40duHY/0X6zEfySJb3NCzLSZAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAiAnUF6PneKlHJT6DnIXqxa8bBXXFsfr2noYs9y92PCGR/iohT6tHozSIbqmehNQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEEhNoO4APd9oJSqrjv/tL7zp5b3DMThUz4nowo/q+AX9XUMxcGc9r9v33fOO//EAIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBZAo0G6Pkr3FcX/h76nLv2xuELTu8s6mna7dyNe+PIC4ta++75NI3LYwkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQmD6BhgL0vO1KVOr7HvrHl9weH77nounbegc8+RPn3R4f2VTUeCQi8le3539dBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6BiBhgP0XGo0RN9RSG3Oxr1xuKvoyehCj+j4m+cO740jhU/6++55x/9wABAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoTIGmBOh1h+hveumGWHNrd2fSl7zr5ZduiOt+VtRWeF7yWJQnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKB1BZoWoI+G6CtGv4le245n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AAECBAgQIECAAAECBAgQIFC2gAC9bGH1CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAJAQF6EmPSJAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiULSBAL1tYfQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBIQkCAnsSYNEmAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECZQsI0MsWVp8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEkhAQoCcxJk0SIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQNkCAvSyhdUnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgSQEBOhJjEmTBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFC2gAC9bGH1CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAJAQF6EmPSJAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiULSBAL1tYfQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBIQkCAnsSYNEmAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECZQsI0MsWVp8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEkhAQoCcxJk0SIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQNkCAvSyhdUnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgSQEBOhJjEmTBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFC2gAC9bGH1CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAJAQF6EmPSJAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiULSBAL1tYfQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBIQkCAnsSYNEmAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECZQsI0MsWVp8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEkhAQoCcxJk0SIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQNkCAvSyhdUnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgSQEBOhJjEmTBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFC2gAC9bGH1CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAJAQF6EmPSJAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiULSBAL1tYfQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBIQkCAnsSYNEmAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECZQsI0MsWVp8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEkhAQoCcxJk0SIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQNkCAvSyhdUnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgSQEBOhJjEmTBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFC2wH8AohmGbZVbbCUAAAAASUVORK5CYII=data:image/png;base64,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,extensions:ANGLE_instanced_arrays;EXT_blend_minmax;EXT_color_buffer_half_float;EXT_disjoint_timer_query;EXT_float_blend;EXT_frag_depth;EXT_shader_texture_lod;EXT_texture_compression_bptc;EXT_texture_compression_rgtc;EXT_texture_filter_anisotropic;EXT_sRGB;KHR_parallel_shader_compile;OES_element_index_uint;OES_fbo_render_mipmap;OES_standard_derivatives;OES_texture_float;OES_texture_float_linear;OES_texture_half_float;OES_texture_half_float_linear;OES_vertex_array_object;WEBGL_color_buffer_float;WEBGL_compressed_texture_s3tc;WEBGL_compressed_texture_s3tc_srgb;WEBGL_debug_renderer_info;WEBGL_debug_shaders;WEBGL_depth_texture;WEBGL_draw_buffers;WEBGL_lose_context;WEBGL_multi_draw,webgl aliased line width range:[1, 1],webgl aliased point size range:[1, 1024],webgl alpha bits:8,webgl antialiasing:yes,webgl blue bits:8,webgl depth bits:24,webgl green bits:8,webgl max anisotropy:16,webgl max combined texture image units:32,webgl max cube map texture size:16384,webgl max fragment uniform vectors:1024,webgl max render buffer size:16384,webgl max texture image units:16,webgl max texture size:16384,webgl max varying vectors:30,webgl max vertex attribs:16,webgl max vertex texture image units:16,webgl max vertex uniform vectors:4095,webgl max viewport dims:[32767, 32767],webgl red bits:8,webgl renderer:WebKit WebGL,webgl shading language version:WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium),webgl stencil bits:0,webgl vendor:WebKit,webgl version:WebGL 1.0 (OpenGL ES 2.0 Chromium),webgl unmasked vendor:Google Inc. (NVIDIA) #itsl7pRpEh,webgl unmasked renderer:ANGLE (NVIDIA, NVIDIA GeForce RTX 3060 Laptop GPU (0x00002560) Direct3D11 vs_5_0 ps_5_0, D3D11) #itsl7pRpEh,webgl vertex shader high float precision:23,webgl vertex shader high float precision rangeMin:127,webgl vertex shader high float precision rangeMax:127,webgl vertex shader medium float precision:23,webgl vertex shader medium float precision rangeMin:127,webgl vertex shader medium float precision rangeMax:127,webgl vertex shader low float precision:23,webgl vertex shader low float precision rangeMin:127,webgl vertex shader low float precision rangeMax:127,webgl fragment shader high float precision:23,webgl fragment shader high float precision rangeMin:127,webgl fragment shader high float precision rangeMax:127,webgl fragment shader medium float precision:23,webgl fragment shader medium float precision rangeMin:127,webgl fragment shader medium float precision rangeMax:127,webgl fragment shader low float precision:23,webgl fragment shader low float precision rangeMin:127,webgl fragment shader low float precision rangeMax:127,webgl vertex shader high int precision:0,webgl vertex shader high int precision rangeMin:31,webgl vertex shader high int precision rangeMax:30,webgl vertex shader medium int precision:0,webgl vertex shader medium int precision rangeMin:31,webgl vertex shader medium int precision rangeMax:30,webgl vertex shader low int precision:0,webgl vertex shader low int precision rangeMin:31,webgl vertex shader low int precision rangeMax:30,webgl fragment shader high int precision:0,webgl fragment shader high int precision rangeMin:31,webgl fragment shader high int precision rangeMax:30,webgl fragment shader medium int precision:0,webgl fragment shader medium int precision rangeMin:31,webgl fragment shader medium int precision rangeMax:30,webgl fragment shader low int precision:0,webgl fragment shader low int precision rangeMin:31,webgl fragment shader low int precision rangeMax:30Google Inc. (NVIDIA) #itsl7pRpEh~ANGLE (NVIDIA, NVIDIA GeForce RTX 3060 Laptop GPU (0x00002560) Direct3D11 vs_5_0 ps_5_0, D3D11) #itsl7pRpEhfalsetruefalsefalse0,false,falseArial,Arial Black,Arial Narrow,Book Antiqua,Bookman Old Style,Calibri,Cambria,Cambria Math,Century,Century Gothic,Century Schoolbook,Comic Sans MS,Consolas,Courier,Courier New,Georgia,Helvetica,Helvetica Neue,Impact,Lucida Bright,Lucida Calligraphy,Lucida Console,Lucida Fax,Lucida Handwriting,Lucida Sans,Lucida Sans Typewriter,Lucida Sans Unicode,Microsoft Sans Serif,Monotype Corsiva,MS Gothic,MS PGothic,MS Reference Sans Serif,MS Sans Serif,MS Serif,Palatino Linotype,Segoe Print,Segoe Script,Segoe UI,Segoe UI Light,Segoe UI Semibold,Segoe UI Symbol,Tahoma,Times,Times New Roman,Trebuchet MS,Verdana,Wingdings,Wingdings 2,Wingdings 3124.04347527516074"
assert gen_buvid_fp(FP, 31) == "e01abd0e12f9ee456fe52d2efd6803bb"
assert gen_buvid_fp("", 31) == "24700f9f1986800ab4fcc880530dd0ed"
print("gen_buvid_fp() No Problem. ") and, Rust is so interesting :) |
抱歉我记错了,buvid_fp你早就说过了。 我阅读你指出的b_lsid代码后,追溯过其中 根据已有的信息,如果 你大量使用移动端API时,是不是要面临更艰难的反编译,更多的硬件特征模拟乃至无线电特征模拟? PS:mikufans 可真是个很硬核的称谓 |
|
buvid4,其他接口可以返回 但是b_lsid、_uuid、buvid_fp 这三个值 有接口返回来吗 |
它们全都是生成的,代码在一楼 |
近来约半月, 使用 Firefox, 对于 |
RE from
https://s1.hdslb.com/bfs/seed/log/report/log-reporter.js
Last Updated: 2024/2/15 15:05, original js content md5:
a6fa378028e0cce7ea7202dda4783781
, now changed toe454c139bf766d9187d74e3fd5ffc1bc
.Caution
勿盲目照搬示例.
DO NOT JUST COPY THE FOLLOWING EXAMPLES!!!
https://api.bilibili.com/x/frontend/finger/spi
https://api.bilibili.com/x/internal/gaia-gateway/ExClimbWuzhi
Cookie is needed. Example:
POST Content
Originally posted by @cxw620 in #686 (comment)
UUID (
_uuid
mentioned above) generation algorithmSee Rust Playground
BUVID Fp (
buvid_fp
mentioned above) generation algorithmTip
Using your own browser's fingerprintjs2 info and related
buvid_fp
will be the best choice for your crawler.See Rust Playground
A good way to obtain a buvid_fp
Copy these codes into your browser console:
Then run
Fingerprint2.getV18({}, function(e,t) { console.log(e); console.log(t) })
. You will get a fp string and related fp information.The text was updated successfully, but these errors were encountered: