有时候放弃也是一种智慧。
就像这说的一样,美团的拼图滑块,不知道这个缺口该怎么去处理,正常划顶到最外面去了,所以就不知道这个是咋计算的。
先来看看他的这个加密,跟原来的一划到底其实是一样的,难度只是在轨迹的处理上,我觉得还是一划到底简单点,然后的话拼图滑块取消了sign跟sess的计算。
这就叫给你关了一扇门,又给你打开了一扇窗,各有各的难。
behavior值:包含了时间,滑动距离的验证。
token也是一样的流程: 然后轨迹信息在这个ft,mt中,mt为倒叙的behiver_info['trajectory'][0]['point']信息,这个可以去看看,不过最后一个时间值不同,找了几次规律发现时间差为37,47。大家也可以去试试看。
分享一个自己写的轨迹处理:
def get_tracks(distance):trajectory=[]track_token_ft=[]track_token_mt=[]ts=int(time.time()*1000)cts=int(int(time.time()*1000)+random.random()*(10**6))first_x=826first_y=random.randint(400,410)behiver_info={"env": {"Type": 1,"zone": [[first_y-72,first_y-3],[296,222],[296,44]],"client": [803,388],"Timestamp": [ts,cts],"count": 1,"timeout": 0},"trajectory": [{"point": [[0,826,403,cts-ts],[0,827,403,190805],[0,828,403,190821],[0,829,403,190837],[0,830,403,190854],[0,831,403,190869],[0,832,403,190901],[0,833,403,190917],[0,834,403,190933],[0,835,403,190957],[0,836,403,190965],[0,837,403,190981],[0,838,403,191015],[0,840,403,191037],[0,841,403,191045],[0,843,403,191061],[0,844,403,191077],[0,846,403,191085],[0,847,403,191101],[0,849,403,191117],[0,850,403,191125],[0,852,403,191133],[0,853,403,191149],[0,855,403,191157],[0,856,403,191173],[0,857,403,191181],[0,858,403,191189],[0,859,403,191213],[0,860,403,191229],[0,861,403,191237],[0,862,403,191253],[0,864,403,191269],[0,865,403,191285],[0,867,403,191301],[0,868,403,191317],[0,869,403,191333],[0,871,403,191341],[0,873,403,191357],[0,874,403,191365],[0,876,403,191381],[0,878,403,191389],[0,879,403,191397],[0,881,403,191413],[0,882,403,191421],[0,883,403,191429],[0,884,403,191453],[0,885,403,191461],[0,886,403,191477],[0,887,403,191485],[0,888,403,191493],[0,889,403,191501],[0,890,403,191509],[0,891,403,191517],[0,892,403,191525],[0,893,403,191541],[0,894,403,191549],[0,895,403,191565],[0,896,403,191573],[0,898,403,191581],[0,899,403,191597],[0,901,403,191605],[0,903,403,191621],[0,904,403,191629],[0,905,403,191637],[0,906,403,191645],[0,907,403,191653],[0,910,403,191661],[0,911,403,191677],[0,913,403,191685],[0,914,403,191701],[0,916,403,191718],[0,917,403,191725],[0,918,403,191733],[0,919,403,191741],[0,921,403,191749],[0,922,403,191757],[0,923,403,191766],[0,925,403,191773],[0,926,403,191781],[0,927,403,191797],[0,928,403,191805],[0,929,403,191814],[0,930,403,191821],[0,931,403,191829],[0,932,403,191837],[0,933,403,191846],[0,934,403,191853],[0,936,403,191862],[0,938,403,191869],[0,939,403,191885],[0,941,403,191893],[0,942,403,191909],[0,944,403,191933],[0,945,403,191965],[0,947,403,191981],[0,948,403,191997],[0,950,403,192005],[0,951,403,192013],[0,953,403,192021],[0,954,403,192029],[0,955,403,192037],[0,956,403,192045],[0,957,403,192053],[0,958,403,19206],[0,959,403,192069],[0,960,403,192077],[0,961,403,192093],[0,962,403,192101],[0,963,403,192109],[0,964,403,192125],[0,966,403,192133],[0,967,403,192149],[0,969,403,192157],[0,970,403,192173],[0,972,403,192181],[0,973,403,192197],[0,974,403,192205],[0,975,403,192213],[0,976,403,192229],[0,977,403,192245],[0,978,403,192261],[0,979,403,192277],[0,980,403,192285],[0,982,403,192293],[0,985,403,192309],[0,987,403,192317],[0,989,403,192325],[0,991,403,192333],[0,992,403,192349],[0,994,403,192357],[0,996,403,192381],[0,997,403,192405],[0,998,403,192437],[0,999,403,192445],[0,1000,403,192461],[0,1001,403,192477],[0,1003,403,192509],[0,1004,403,192525],[0,1006,403,192550],[0,1007,403,192573],[0,1008,403,192597],[0,1009,403,192613],[0,1010,403,192629],[0,1011,403,192669],[0,1012,403,192765],[0,1013,403,192781],[0,1014,403,192814]],"vector": {"orientation": "h"}}]}strat_time=int(cts-ts)trajectory.append([0,first_x,first_y,strat_time])for points in range(1,distance):next_x=first_x+pointsnext_y=first_y+random.randint(-1,1)strat_time=int(strat_time+random.randint(5,25))if next_x-first_x!=distance:trajectory.append([0,next_x,next_y,strat_time])else:breakprint("distance:",trajectory[-1][1]-trajectory[0][1])behiver_info['trajectory'][0]['point']=trajectoryprint('behiver_info:',behiver_info)# timeout=behiver_info['env']['Timestamp'][1]-behiver_info['env']['Timestamp'][0]# print(timeout)# timeout=behiver_info['trajectory'][0]['point'][0][3]# print(timeout)# behiver_dis=behiver_info['trajectory'][0]['point'][-1][1]-behiver_info['trajectory'][0]['point'][0][1]# print(behiver_dis)token_mt=["1014,403,192851","1013,403,192818","1012,403,192802","1011,403,192706","1010,403,192666","1009,403,192650","1008,403,192634","1007,403,192610","1006,403,192587","1004,403,192562","1003,403,192546","1001,403,192514","1000,403,192498","999,403,192482","998,403,192474","997,403,192442","996,403,192418","994,403,192394","992,403,192386","991,403,192370","989,403,192362","987,403,192354","985,403,192346","982,403,192330","980,403,192322","979,403,192314","978,403,192298","977,403,192282","976,403,192266","975,403,192250","974,403,192242","973,403,192234","972,403,192218","970,403,192210","969,403,192194","967,403,192186","966,403,192170","964,403,192162","963,403,192146","962,403,192138","961,403,192130","960,403,192114","959,403,192106","958,403,192098","957,403,192090","956,403,192082","955,403,192074","954,403,192066","953,403,192058","951,403,192050","950,403,192042","948,403,192034","947,403,192018","945,403,192002","944,403,191970","942,403,191946","941,403,191930","939,403,191922","938,403,191906","936,403,191899"] ####倒序behiver_info['trajectory'][0]['point']for points in trajectory[::-1][0:60]:track_token_mt.append(f"{points[1]},{points[2]},{int(points[3])+37}")print('track_token_mt:',track_token_mt)first_x_ft=first_x+10first_y_ft=distance-37strat_time_ft=2858track_token_ft.append(f"{first_x_ft},{first_y_ft},{strat_time_ft}")next_first_x_ft = first_x_ft - random.randint(1, 3)next_first_y_ft = first_y_ft - random.randint(1, 3)next_strat_time_ft = strat_time_ft - random.randint(10, 30)track_token_ft.append(f"{next_first_x_ft},{next_first_y_ft},{next_strat_time_ft}")for i in range(0,59):next_first_x_ft=next_first_x_ft-1next_first_y_ft=next_first_y_ft-2if next_first_y_ft<=0 or next_first_y_ft<=1:next_strat_time_ft=next_strat_time_ft-itrack_token_ft.append(f"{next_first_x_ft},{next_first_y_ft+(-next_first_y_ft)+2},{next_strat_time_ft}")else:track_token_ft.append(f"{next_first_x_ft},{next_first_y_ft},{next_strat_time_ft}")last_ft_x=int(track_token_ft[-1][0].strip(',')[0])last_ft_time = track_token_ft[-1].split(',')[-1]track_token_ft.append(f"{last_ft_x},{0},{last_ft_time}")token_info={"v": "2.2.2","ts": ts,"cts": int(time.time()*1000),"brVD": [1920,487],"brR": [[1920,1080],[1920,1050],24,24],"bI": ["https://verify.meituan.com/v2/web/general_page?action=spiderindefence&requestCode=becca4f50deb45dab160f17ebc43b8fd&platform=1000&adaptor=auto&succCallbackUrl=https%3A%2F%2Foptimus-mtsi.meituan.com%2Foptimus%2FverifyResult%3ForiginUrl%3Dhttps%253A%252F%252Fwww.meituan.com%252F","https://passport.meituan.com/"],"aM": "","broP": ["PDF Viewer","Chrome PDF Viewer","Chromium PDF Viewer","Microsoft Edge PDF Viewer","WebKit built-in PDF"],"cV": "606031946ed0a0ab251a38223152c059","wV": "WebKit","wR": "WebKit WebGL","wVU": "Google Inc. (NVIDIA)","wRU": "ANGLE (NVIDIA, NVIDIA GeForce GT 1030 Direct3D11 vs_5_0 ps_5_0, D3D11)","aF": "","wI": "3166190811","wC": "{\"platform\":\"Win32\",\"userAgent\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36\",\"contextName\":\"webgl2\",\"glVersion\":\"WebGL 2.0 (OpenGL ES 3.0 Chromium)\",\"shadingLanguageVersion\":\"WebGL GLSL ES 3.00 (OpenGL ES GLSL ES 3.0 Chromium)\",\"vendor\":\"WebKit\",\"renderer\":\"WebKit WebGL\",\"unMaskedVendor\":\"Google Inc. (NVIDIA)\",\"unMaskedRenderer\":\"ANGLE (NVIDIA, NVIDIA GeForce GT 1030 Direct3D11 vs_5_0 ps_5_0, D3D11)\",\"antialias\":\"Available\",\"angle\":\"Yes, D3D9\",\"majorPerformanceCaveat\":\"No\",\"maxColorBuffers\":8,\"redBits\":8,\"greenBits\":8,\"blueBits\":8,\"alphaBits\":8,\"depthBits\":24,\"stencilBits\":8,\"maxRenderBufferSize\":16384,\"maxCombinedTextureImageUnits\":32,\"maxCubeMapTextureSize\":16384,\"maxFragmentUniformVectors\":1024,\"maxTextureImageUnits\":16,\"maxTextureSize\":16384,\"maxVaryingVectors\":30,\"maxVertexAttributes\":16,\"maxVertexTextureImageUnits\":16,\"maxVertexUniformVectors\":4095,\"aliasedLineWidthRange\":\"[1, 1]\",\"aliasedPointSizeRange\":\"[1, 1024]\",\"maxViewportDimensions\":\"[32767, 32767]\",\"maxAnisotropy\":16,\"vertexShaderBestPrecision\":\"[-1.7014118346046923e+38, 1.7014118346046923e+38] (23 bit mantissa)\",\"fragmentShaderBestPrecision\":\"[-1.7014118346046923e+38, 1.7014118346046923e+38] (23 bit mantissa)\",\"fragmentShaderFloatIntPrecision\":\"highp/highp\",\"webglExtensions\":[\"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\"],\"maxColorBuffers2\":1,\"webgl2Extensions\":[\"EXT_color_buffer_float\",\"EXT_color_buffer_half_float\",\"EXT_disjoint_timer_query_webgl2\",\"EXT_float_blend\",\"EXT_texture_compression_bptc\",\"EXT_texture_compression_rgtc\",\"EXT_texture_filter_anisotropic\",\"EXT_texture_norm16\",\"KHR_parallel_shader_compile\",\"OES_draw_buffers_indexed\",\"OES_texture_float_linear\",\"OVR_multiview2\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_compressed_texture_s3tc_srgb\",\"WEBGL_debug_renderer_info\",\"WEBGL_debug_shaders\",\"WEBGL_lose_context\",\"WEBGL_multi_draw\",\"WEBGL_provoking_vertex\"],\"maxVertexUniformComponents\":16380,\"maxVertexUniformBlocks\":12,\"maxVertexOutputComponents\":120,\"maxVaryingComponents\":120,\"maxFragmentUniformComponents\":4096,\"maxFragmentUniformBlocks\":12,\"maxFragmentInputComponents\":120,\"minProgramTexelOffset\":-8,\"maxProgramTexelOffset\":7,\"maxDrawBuffers\":8,\"maxColorAttachments\":8,\"maxSamples\":8,\"max3dTextureSize\":2048,\"maxArrayTextureLayers\":2048,\"maxTextureLodBias\":2,\"maxUniformBufferBindings\":24,\"maxUniformBlockSize\":65536,\"uniformBufferOffsetAlignment\":256,\"maxCombinedUniformBlocks\":24,\"maxCombinedVertexUniformComponents\":212988,\"maxCombinedFragmentUniformComponents\":200704,\"maxTransformFeedbackInterleavedComponents\":120,\"maxTransformFeedbackSeparateAttribs\":4,\"maxTransformFeedbackSeparateComponents\":4,\"maxElementIndex\":4294967294,\"maxServerWaitTimeout\":0,\"webgl2Functions\":[\"copyBufferSubData\",\"getBufferSubData\",\"blitFramebuffer\",\"framebufferTextureLayer\",\"getInternalformatParameter\",\"invalidateFramebuffer\",\"invalidateSubFramebuffer\",\"readBuffer\",\"renderbufferStorageMultisample\",\"texStorage2D\",\"texStorage3D\",\"texImage3D\",\"texSubImage3D\",\"copyTexSubImage3D\",\"compressedTexImage3D\",\"compressedTexSubImage3D\",\"getFragDataLocation\",\"uniform1ui\",\"uniform2ui\",\"uniform3ui\",\"uniform4ui\",\"uniform1uiv\",\"uniform2uiv\",\"uniform3uiv\",\"uniform4uiv\",\"uniformMatrix2x3fv\",\"uniformMatrix3x2fv\",\"uniformMatrix2x4fv\",\"uniformMatrix4x2fv\",\"uniformMatrix3x4fv\",\"uniformMatrix4x3fv\",\"vertexAttribI4i\",\"vertexAttribI4iv\",\"vertexAttribI4ui\",\"vertexAttribI4uiv\",\"vertexAttribIPointer\",\"vertexAttribDivisor\",\"drawArraysInstanced\",\"drawElementsInstanced\",\"drawRangeElements\",\"drawBuffers\",\"clearBufferiv\",\"clearBufferuiv\",\"clearBufferfv\",\"clearBufferfi\",\"createQuery\",\"deleteQuery\",\"isQuery\",\"beginQuery\",\"endQuery\",\"getQuery\",\"getQueryParameter\",\"createSampler\",\"deleteSampler\",\"isSampler\",\"bindSampler\",\"samplerParameteri\",\"samplerParameterf\",\"getSamplerParameter\",\"fenceSync\",\"isSync\",\"deleteSync\",\"clientWaitSync\",\"waitSync\",\"getSyncParameter\",\"createTransformFeedback\",\"deleteTransformFeedback\",\"isTransformFeedback\",\"bindTransformFeedback\",\"beginTransformFeedback\",\"endTransformFeedback\",\"transformFeedbackVaryings\",\"getTransformFeedbackVarying\",\"pauseTransformFeedback\",\"resumeTransformFeedback\",\"bindBufferBase\",\"bindBufferRange\",\"getIndexedParameter\",\"getUniformIndices\",\"getActiveUniforms\",\"getUniformBlockIndex\",\"getActiveUniformBlockParameter\",\"getActiveUniformBlockName\",\"uniformBlockBinding\",\"createVertexArray\",\"deleteVertexArray\",\"isVertexArray\",\"bindVertexArray\"]}","aG": "325","wA": "390933e72e6096e878c1b972bac13f16","fT": track_token_ft,"mT": track_token_mt,"kT": [],"aT": ["1004,28,DIV,4318158"],"tT": [],"dT": ["827,411,rect,211510"],"sT": [],"inputs": [],"buttons": [],"fL": "3c9243fc96d5e34649a98b502d509451"}print('track_token_ft:',track_token_ft)return {'behiver_info': behiver_info,'token_info': token_info}
还有个难点就是这个请求头的Authencation值,hock一下看看。
(function() {var org = window.XMLHttpRequest.prototype.setRequestHeader;window.XMLHttpRequest.prototype.setRequestHeader = function(key, value) {console.log(key, ':', value)if (key == 'Authencation') {debugger ;}return org.apply(this, arguments);};
}
)();
在这里
然后就没然后了,基本上关键的入口都找完了。
这个识别是有问题的,所以在线征集meituan选手一起玩玩。
每天都在被洗脑,哈哈
完事儿了哦,大表哥们。有问题可以给我留言。或者V:15702312233
记得关注我们的作坊:图腾视觉开放平台-高速、稳定、易用的webapi接口调用 (现已合作大佬超乎你想象)图腾视觉-OCR识别平台
提示:有问题的小伙伴可以私信讨论。
重要的事儿说三遍 :若是侵权请联系作者删,若是侵权请联系作者删,若是侵权请联系作者删。