douyin评论抓取-笔记
This_is_Y Lv6

摘要

评论数据包(原始)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
GET /aweme/v1/web/comment/list/?device_platform=webapp&aid=6383&channel=channel_pc_web&aweme_id=7442568985704402217&cursor=0&count=20&item_type=0&insert_ids=&whale_cut_token=&cut_version=1&rcFT=&update_version_code=170400&pc_client_type=1&pc_libra_divert=Mac&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=2560&screen_height=1440&browser_language=zh-CN&browser_platform=MacIntel&browser_name=Chrome&browser_version=131.0.0.0&browser_online=true&engine_name=Blink&engine_version=131.0.0.0&os_name=Mac+OS&os_version=10.15.7&cpu_core_num=10&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=50&webid=7447140799244437029&uifid=0de8750d2b188f4235dbfd208e44abbb976428f0720eb983255afefa45d39c0c9d87973736bdc16412669c620fda029259788004137e411692ddd424f68f430836eba4e49fea6a1107e78855f405c9fd42b6add7a7d0c41b33e52980034bd4e256a821670aee939b707573536c7e9b159216fd20f6bdd7007ea455f63714ad42ce66096131ce7b4f092ffb4184790eeb9b6460a3093b2a6cfd79e9531587a0f1&msToken=cdYb9qu6-ekPtb7xslJBcRhAVxEifsE0C-wpWfZVbGUX3cFHDJH0k26WQ3RM216-nkdHDmqbi145Iqqa58UTx93uU3PwIcG4GR0vdZTaYDcmRMQ-2kwQbxQujnoT9tp_SDvCFpzhiQ6KO3IWOs3D-mtkvkqa_M9UlyTDQ2yIKrROuvZ3x2ryPg%3D%3D&a_bogus=mXURgFt7QqRjcdKtmCTie3%2FUR8dANsuyhFidRF5U7OiTYHtawYNhkcckrxLMLu7%2F1bBkkF27ExUMGnncPz7hZF9kwmkkuMiWXGA5nSmo01H4Yav23q6NCUUzzX0e854qeQVCiAgVhUHL1fV-wqQm%2FQIJ7KcKQmWhOpxfk2YSP9Gg1K8I21MTiM0gHfnqQscDuSlfej%3D%3D HTTP/1.1
Host: www.douyin.com
Cookie: __ac_nonce=067598f2c00f66ac06aa5; __ac_signature=_02B4Z6wo00f01zZ9y7QAAIDAZILrrdRCxK82Xc8AAKrR8f; SEARCH_RESULT_LIST_TYPE=%22single%22; ttwid=1%7CTEoFoevVYlpx89roxYxTr4jjE1rFHVq-xoasGGU-CVs%7C1733922604%7C6f2908e9c92faef61b81364dc3185e425c792abe40164446fc52f2e2ac403862; hevc_supported=true; csrf_session_id=dae2696febd3260fd13117537d76c17a; fpk1=U2FsdGVkX1+ixw7KQtykneVFhwxGVTOKlincdHnpQ6j1gOKcBIMU+FPG1nxekmRdLsDT5efBWsOdQ6zLHhafNQ==; fpk2=0845b309c7b9b957afd9ecf775a4c21f; is_dash_user=1; volume_info=%7B%22isUserMute%22%3Afalse%2C%22isMute%22%3Atrue%2C%22volume%22%3A0.5%7D; FORCE_LOGIN=%7B%22videoConsumedRemainSeconds%22%3A180%7D; passport_csrf_token=1d3d4342a7adc6dd6d32543f35b0a22c; passport_csrf_token_default=1d3d4342a7adc6dd6d32543f35b0a22c; biz_trace_id=f58076d8; bd_ticket_guard_client_web_domain=2; download_guide=%221%2F20241211%2F0%22; s_v_web_id=verify_m4jwuhr8_NmYJCOww_mlP5_47U1_8eMU_17JaJrbD55ON; passport_mfa_token=Cje2D6nwy4YN2IoImQdRfZePr5YDee7W6nV%2B6BsstFcmatbo3Frbe9HJbDi9dMpSfkz8hogv0yHEGkoKPOesTtF70Gyoq8cy3acIPCytb8yqh2YCu2ELssrMmV9W7tiGcvb4SWAoIv6ymIY6QP2nc4x3PBrHMFqVyxCx6uMNGPax0WwgAiIBA4CnDiI%3D; d_ticket=8c6ecb0e5106fc88bf33e1ff55d0571823098; passport_assist_user=CkEKV8CSC5xeP2yZ_EO0r5LVO0jySPBMrkMISNZ9lvJdRNDmmbDDzgV56NyT7ExJEgLotdT12Ckw2fxlAZl3nrJimBpKCjyI4QeAO3QxBkxgthcExa8p4A06mDiHngUU71ft8nsBFJMr_93V1KMCqx8QiVH3ubCkCs1B2f-sROcMfUsQ6erjDRiJr9ZUIAEiAQPvVwK0; n_mh=ZHNznisqr46l_R0yp-iFhzRpWnEWTe7sghpQXh04UGs; sso_uid_tt=9a5b5965b3a2c43bb51ff26b203c1a58; sso_uid_tt_ss=9a5b5965b3a2c43bb51ff26b203c1a58; toutiao_sso_user=6742291a373ea75efdf33ee74ec59dcb; toutiao_sso_user_ss=6742291a373ea75efdf33ee74ec59dcb; sid_ucp_sso_v1=1.0.0-KGJiNmZiOGU2N2YzOWU3ZTRkZDJhOTJjZjdjNDc4OTJkZjBjYjMxZTEKIQjZpOD2gMy5BRDdn-a6BhjvMSAMML3bg7AGOAZA9AdIBhoCbGYiIDY3NDIyOTFhMzczZWE3NWVmZGYzM2VlNzRlYzU5ZGNi; ssid_ucp_sso_v1=1.0.0-KGJiNmZiOGU2N2YzOWU3ZTRkZDJhOTJjZjdjNDc4OTJkZjBjYjMxZTEKIQjZpOD2gMy5BRDdn-a6BhjvMSAMML3bg7AGOAZA9AdIBhoCbGYiIDY3NDIyOTFhMzczZWE3NWVmZGYzM2VlNzRlYzU5ZGNi; passport_auth_status=8386bcc5ee0d6172875b777637a491af%2C; passport_auth_status_ss=8386bcc5ee0d6172875b777637a491af%2C; uid_tt=978a4cbbb6bd511cb1e49d19083d98ad; uid_tt_ss=978a4cbbb6bd511cb1e49d19083d98ad; sid_tt=66eaa623e6858fc4c17c528e4e951789; sessionid=66eaa623e6858fc4c17c528e4e951789; sessionid_ss=66eaa623e6858fc4c17c528e4e951789; is_staff_user=false; UIFID=0de8750d2b188f4235dbfd208e44abbb976428f0720eb983255afefa45d39c0c9d87973736bdc16412669c620fda029259788004137e411692ddd424f68f430836eba4e49fea6a1107e78855f405c9fd42b6add7a7d0c41b33e52980034bd4e256a821670aee939b707573536c7e9b159216fd20f6bdd7007ea455f63714ad42ce66096131ce7b4f092ffb4184790eeb9b6460a3093b2a6cfd79e9531587a0f1; publish_badge_show_info=%220%2C0%2C0%2C1733922784987%22; SelfTabRedDotControl=%5B%5D; _bd_ticket_crypt_doamin=2; _bd_ticket_crypt_cookie=0156bc8d125ab016b03f20eb76e21d21; __security_server_data_status=1; sid_guard=66eaa623e6858fc4c17c528e4e951789%7C1733922786%7C5183998%7CSun%2C+09-Feb-2025+13%3A13%3A04+GMT; sid_ucp_v1=1.0.0-KDFiYzY2YmUwZjU1M2RkMGU5ZjQ0YTIyM2QyMWExNTA1ZTRiOWRmNjMKGwjZpOD2gMy5BRDin-a6BhjvMSAMOAZA9AdIBBoCaGwiIDY2ZWFhNjIzZTY4NThmYzRjMTdjNTI4ZTRlOTUxNzg5; ssid_ucp_v1=1.0.0-KDFiYzY2YmUwZjU1M2RkMGU5ZjQ0YTIyM2QyMWExNTA1ZTRiOWRmNjMKGwjZpOD2gMy5BRDin-a6BhjvMSAMOAZA9AdIBBoCaGwiIDY2ZWFhNjIzZTY4NThmYzRjMTdjNTI4ZTRlOTUxNzg5; home_can_add_dy_2_desktop=%221%22; bd_ticket_guard_client_data=eyJiZC10aWNrZXQtZ3VhcmQtdmVyc2lvbiI6MiwiYmQtdGlja2V0LWd1YXJkLWl0ZXJhdGlvbi12ZXJzaW9uIjoxLCJiZC10aWNrZXQtZ3VhcmQtcmVlLXB1YmxpYy1rZXkiOiJCSHNTaU9EdFFlTnZ1ZzRVQkpHdFlFaDlsOUJDeWtsazRFYjJLUHJSL0RXUkw2SE51NEo0T2Z4ZllXc09YbldUdS9VbG0wb0VrLzd4M2tGOGJXeWtOOWM9IiwiYmQtdGlja2V0LWd1YXJkLXdlYi12ZXJzaW9uIjoyfQ%3D%3D; passport_fe_beating_status=true; odin_tt=32b8ae86dc7adff7d90cbf05c7af84e7a585f030513fc4f8e1cceda1ee54ca5b83aa1eb4d376fdd2a4bbcca0d77578e1; IsDouyinActive=true
Pragma: no-cache
Cache-Control: no-cache
Uifid: 0de8750d2b188f4235dbfd208e44abbb976428f0720eb983255afefa45d39c0c9d87973736bdc16412669c620fda029259788004137e411692ddd424f68f430836eba4e49fea6a1107e78855f405c9fd42b6add7a7d0c41b33e52980034bd4e256a821670aee939b707573536c7e9b159216fd20f6bdd7007ea455f63714ad42ce66096131ce7b4f092ffb4184790eeb9b6460a3093b2a6cfd79e9531587a0f1
Sec-Ch-Ua-Platform: "macOS"
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
Accept: application/json, text/plain, */*
Sec-Ch-Ua: "Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"
Sec-Ch-Ua-Mobile: ?0
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://www.douyin.com/search/%E6%A4%8E%E5%90%8D%E7%9C%9F%E7%99%BD%E5%A3%81%E7%BA%B8?modal_id=7442568985704402217&type=general
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Priority: u=1, i
Connection: keep-alive


响应:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
HTTP/2 200 OK
Server: Tengine
Content-Type: application/json
Date: Wed, 11 Dec 2024 13:20:40 GMT
Vary: Accept-Encoding
X-Tt-Logid: 20241211212040C1994FFF1B2BA31ADA83
Bd-Tt-Error-Code: 0
Tt_stable: 1
Status_code: 0
Bd-Ticket-Guard-Result: 1101
Cookie_ttwidinfo_webid: 7447140799244437029
X-Janus-Info: 8oIkrZVceoBPL5wWpKUMua_gQI2KI6FNYgTmJHi7VB7F_vmU997r3GcBWpaIeZJzj3IJQwYxn7xqdtn02M95vvY8oK0xr_q-HOHiwRTagO42G8NhbAAhgdfR8CNf_fxuihsM5uD5kltNwd6HHPP4uycw-gr57Ask5DFSlIcQOvZqbkXE07_0TX9M3Cujipzxj5DtHAYwVtBQVPQ8GQ-HuPmESZimZ_szmtLT5MorXbVK_KEt0qgBgjJeBSjddfNQliwQBYic9NRrb8w5ogwwIzArQ30r8MZn4g==
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Access-Control-Allow-Credentials: true
Server-Timing: inner; dur=290
X-Tt-Trace-Host: 01f26d6bb59eea7ef041654ec9701bd8ba4cc48c1eaec5919087a1331ecda233c95f0bf0be451b235d7767f89538edba4c0a27b6cc023dcaea9f368b3f73699a5808a72926b8d5f163fbd4a1b42ad9db5f4dde6664adb1caa9daf0a13af70bc87b
X-Tt-Trace-Tag: id=03;cdn-cache=miss;type=dyn
Server-Timing: cdn-cache;desc=MISS,edge;dur=0,origin;dur=324
Via: ens-live1.cn4647[324,0]
Timing-Allow-Origin: *
Eagleid: df6f19ae17339232399844150e

{"status_code":0,"comments":[{"cid":"7442623394489860891","text":"樱花庄的宠物女孩?","aweme_id":"7442568985704402217","create_time":1732870802,"digg_count":0,"status":1,"user":{"uid":"1543325426648475","short_id":"2792456665","nickname":"欧阳陵","signature":"","avatar_larger":{"uri":"1080x1080/aweme-avatar/tos-cn-i-c9aec8xkvj_fbf496f74ea543f3896bbaf2e373884d","url_list":["https://p3-pc.douyinpic.com/aweme/1080x1080/aweme-avatar/tos-cn-i-c9aec8xkvj_fbf496f74ea543f3896bbaf2e373884d.jpeg?from=2956013662"],"width":720,"height":720},"avatar_thumb":{"uri":"100x100/aweme-avatar/tos-cn-i-c9aec8xkvj_fbf496f74ea543f3896bbaf2e373884d","url_list":["https://p3-pc.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-i-c9aec8xkvj_fbf496f74ea543f3896bbaf2e373884d.jpeg?from=2956013662"],"width":720,"height":720},"avatar_medium":{"uri":"720x720/aweme-avatar/tos-cn-i-c9aec8xkvj_fbf496f74ea543f3896bbaf2e373884d","url_list":["https://p3-pc.douyinpic.com/aweme/720x720/aweme-avatar/tos-cn-i-c9aec8xkvj_fbf496f74ea543f3896bbaf2e373884d.jpeg?from=2956013662"],"width":720,"height":720},"is_verified":true,"follow_status":0,"aweme_count":0,"following_count":0,"follower_count":0,"favoriting_count":0,"total_favorited":0,"is_block":false,"hide_search":false,"constellation":4,"mate_add_permission":0,"hide_location":false,"weibo_verify":"","custom_verify":"","unique_id":"dyoxhe389eh4","familiar_confidence":0,"special_lock":1,"need_recommend":0,"is_binded_weibo":false,"weibo_name":"","weibo_schema":"","weibo_url":"","story_open":false,"story_count":0,"has_facebook_token":false,"has_twitter_token":false,"fb_expire_time":0,"tw_expire_time":0,"has_youtube_token":false,"youtube_expire_time":0,"room_id":0,"live_verify":0,"authority_status":0,"verify_info":"","shield_follow_notice":0,"shield_digg_notice":0,"shield_comment_notice":0,"private_relation_list":null,"creator_tag_list":null,"batch_unfollow_contain_tabs":null,"with_commerce_entry":false,"verification_type":1,"enterprise_verify_reason":"","is_ad_fake":false,"batch_unfollow_relation_desc":null,"region":"CN","account_region":"","sync_to_toutiao":0,"commerce_user_level":0,"live_agreement":0,"platform_sync_info":null,"with_shop_entry":false,"is_discipline_member":false,"secret":0,"has_orders":false,"prevent_download":false,"show_image_bubble":false,"geofencing":[],"unique_id_modify_time":1733923240,"video_icon":{"uri":"","url_list":[],"width":720,"height":720},"ins_id":"","google_account":"","youtube_channel_id":"","youtube_channel_title":"","apple_account":0,"with_dou_entry":false,"with_fusion_shop_entry":false,"is_phone_binded":false,"accept_private_policy":false,"twitter_id":"","twitter_name":"","user_canceled":false,"has_email":false,"is_gov_media_vip":false,"live_agreement_time":0,"status":1,"avatar_uri":"aweme-avatar/tos-cn-i-c9aec8xkvj_fbf496f74ea543f3896bbaf2e373884d","follower_status":0,"neiguang_shield":0,"comment_setting":0,"duet_setting":0,"reflow_page_gid":0,"reflow_page_uid":0,"user_rate":1,"download_setting":-1,"download_prompt_ts":0,"react_setting":0,"live_commerce":false,"cover_url":[{"uri":"c8510002be9a3a61aad2","url_list":["https://p3-pc-sign.douyinpic.com/obj/c8510002be9a3a61aad2?lk3s=b031305e\u0026x-expires=1735131600\u0026x-signature=jvaQz8AzlmBWQKlu6aO10YwgZtw%3D\u0026from=2956013662","https://p9-pc-sign.douyinpic.com/obj/c8510002be9a3a61aad2?lk3s=b031305e\u0026x-expires=1735131600\u0026x-signature=DAqJCzHkayn35rc%2FfquOa1G80AY%3D\u0026from=2956013662"],"width":720,"height":720}],"show_gender_strategy":0,"language":"zh-Hans","has_insights":false,"item_list":null,"user_mode":0,"user_period":0,"has_unread_story":false,"new_story_cover":null,"is_star":false,"cv_level":"","type_label":null,"ad_cover_url":null,"comment_filter_status":0,"avatar_168x168":{"uri":"168x168/aweme-avatar/tos-cn-i-c9aec8xkvj_fbf496f74ea543f3896bbaf2e373884d","url_list":["https://p3-pc.douyinpic.com/img/aweme-avatar/tos-cn-i-c9aec8xkvj_fbf496f74ea543f3896bbaf2e373884d~c5_168x168.jpeg?from=2956013662"],"width":720,"height":720},"avatar_300x300":{"uri":"300x300/aweme-avatar/tos-cn-i-c9aec8xkvj_fbf496f74ea543f3896bbaf2e373884d","url_list":["https://p3-pc.douyinpic.com/img/aweme-avatar/tos-cn-i-c9aec8xkvj_fbf496f74ea543f3896bbaf2e373884d~c5_300x300.jpeg?from=2956013662"],"width":720,"height":720},"relative_users":null,"cha_list":null,"sec_uid":"MS4wLjABAAAAwsOLpk2YFZ1rPx7-CNRYjoLOB7PFuVetbQR7TOrt4yWH5tfwxv1zCKPvOt5cJtwj","urge_detail":{"user_urged":0},"need_points":null,"homepage_bottom_toast":null,"can_set_geofencing":null,"room_id_str":"0","white_cover_url":null,"user_tags":null,"stitch_setting":0,"is_mix_user":false,"enable_nearby_visible":true,"ban_user_functions":[],"aweme_control":{"can_forward":true,"can_share":true,"can_comment":true,"can_show_comment":true},"user_not_show":1,"ky_only_predict":0,"user_not_see":0,"card_entries":null,"signature_display_lines":0,"display_info":null,"follower_request_status":0,"live_status":0,"new_friend_type":0,"is_not_show":false,"card_entries_not_display":null,"card_sort_priority":null,"show_nearby_active":false,"interest_tags":null,"school_category":0,"search_impr":{"entity_id":"1543325426648475"},"link_item_list":null,"user_permissions":null,"offline_info_list":null,"is_cf":0,"is_blocking_v2":false,"is_blocked_v2":false,"close_friend_type":0,"signature_extra":null,"max_follower_count":0,"personal_tag_list":null,"cf_list":null,"im_role_ids":null,"not_seen_item_id_list":null,"verification_permission_ids":null,"contacts_status":1,"risk_notice_text":"","follower_list_secondary_information_struct":null,"endorsement_info_list":null,"text_extra":null,"contrail_list":null,"data_label_list":null,"not_seen_item_id_list_v2":null,"is_ban":false,"special_people_labels":null,"special_follow_status":0,"familiar_visitor_user":null,"live_high_value":0,"awemehts_greet_info":"","avatar_schema_list":null,"profile_mob_params":null,"disable_image_comment_saved":0},"reply_id":"0","user_digged":0,"reply_comment":null,"text_extra":[],"label_text":"","label_type":-1,"reply_comment_total":0,"reply_to_reply_id":"0","is_author_digged":false,"stick_position":0,"user_buried":false,"label_list":null,"is_hot":false,"text_music_info":null,"image_list":null,"is_note_comment":0,"ip_label":"陕西","can_share":true,"item_comment_total":5,"level":1,"video_list":null,"sort_tags":"{\"reply_0\":1,\"eco_level_3\":1}","is_user_tend_to_reply":false,"content_type":1,"is_folded":false,"enter_from":"homepage_hot"},{"cid":"7442620955031356217","text":"感觉她的性格气质不应该是这样的","aweme_id":"7442568985704402217","create_time":1732870232,"digg_count":1,"status":1,"user":{"uid":"2999910723758727","short_id":"72167083260","nickname":"趣分享","signature":"","avatar_larger":{"uri":"1080x1080/aweme-avatar/tos-cn-i-0813c001_oUAOAllCz3FDAn89veIA0DACLUgbfwAWAClEXn","url_list":["https://p3-pc.douyinpic.com/aweme/1080x1080/aweme-avatar/tos-cn-i-0813c001_oUAOAllCz3FDAn89veIA0DACLUgbfwAWAClEXn.jpeg?from=2956013662"],"width":720,"height":720},"avatar_thumb":{"uri":"100x100/aweme-avatar/tos-cn-i-0813c001_oUAOAllCz3FDAn89veIA0DACLUgbfwAWAClEXn","url_list":["https://p3-pc.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-i-0813c001_oUAOAllCz3FDAn89veIA0DACLUgbfwAWAClEXn.jpeg?from=2956013662"],"width":720,"height":720},"avatar_medium":{"uri":"720x720/aweme-avatar/tos-cn-i-0813c001_oUAOAllCz3FDAn89veIA0DACLUgbfwAWAClEXn","url_list":["https://p3-pc.douyinpic.com/aweme/720x720/aweme-avatar/tos-cn-i-0813c001_oUAOAllCz3FDAn89veIA0DACLUgbfwAWAClEXn.jpeg?from=2956013662"],"width":720,"height":720},"is_verified":true,"follow_status":0,"aweme_count":0,"following_count":0,"follower_count":0,"favoriting_count":0,"total_favorited":0,"is_block":false,"hide_search":false,"constellation":4,"mate_add_permission":0,"hide_location":false,"weibo_verify":"","custom_verify":"","unique_id":"72167083260","familiar_confidence":0,"special_lock":1,"need_recommend":0,"is_binded_weibo":false,"weibo_name":"","weibo_schema":"","weibo_url":"","story_open":false,"story_count":0,"has_facebook_token":false,"has_twitter_token":false,"fb_expire_time":0,"tw_expire_time":0,"has_youtube_token":false,"youtube_expire_time":0,"room_id":0,"live_verify":0,"authority_status":0,"verify_info":"","shield_follow_notice":0,"shield_digg_notice":0,"shield_comment_notice":0,"private_relation_list":null,"creator_tag_list":null,"batch_unfollow_contain_tabs":null,"with_commerce_entry":false,"verification_type":1,"enterprise_verify_reason":"","is_ad_fake":false,"batch_unfollow_relation_desc":null,"region":"CN","account_region":"","sync_to_toutiao":0,"commerce_user_level":0,"live_agreement":0,"platform_sync_info":null,"with_shop_entry":false,"is_discipline_member":false,"secret":0,"has_orders":false,"prevent_download":false,"show_image_bubble":false,"geofencing":[],"unique_id_modify_time":1733923240,"video_icon":{"uri":"","url_list":[],"width":720,"height":720},"ins_id":"","google_account":"","youtube_channel_id":"","youtube_channel_title":"","apple_account":0,"with_dou_entry":false,"with_fusion_shop_entry":false,"is_phone_binded":false,"accept_private_policy":false,"twitter_id":"","twitter_name":"","user_canceled":false,"has_email":false,"is_gov_media_vip":false,"live_agreement_time":0,"status":1,"avatar_uri":"aweme-avatar/tos-cn-i-0813c001_oUAOAllCz3FDAn89veIA0DACLUgbfwAWAClEXn","follower_status":0,"neiguang_shield":0,"comment_setting":0,"duet_setting":0,"reflow_page_gid":0,"reflow_page_uid":0,"user_rate":1,"download_setting":-1,"download_prompt_ts":0,"react_setting":0,"live_commerce":false,"cover_url":[{"uri":"c8510002be9a3a61aad2","url_list":["https://p3-pc-sign.douyinpic.com/obj/c8510002be9a3a61aad2?lk3s=b031305e\u0026x-expires=1735131600\u0026x-signature=jvaQz8AzlmBWQKlu6aO10YwgZtw%3D\u0026from=2956013662","https://p9-pc-sign.douyinpic.com/obj/c8510002be9a3a61aad2?lk3s=b031305e\u0026x-expires=1735131600\u0026x-signature=DAqJCzHkayn35rc%2FfquOa1G80AY%3D\u0026from=2956013662"],"width":720,"height":720}],"show_gender_strategy":1,"language":"zh-Hans","has_insights":false,"item_list":null,"user_mode":0,"user_period":0,"has_unread_story":false,"new_story_cover":null,"is_star":false,"cv_level":"","type_label":null,"ad_cover_url":null,"comment_filter_status":0,"avatar_168x168":{"uri":"168x168/aweme-avatar/tos-cn-i-0813c001_oUAOAllCz3FDAn89veIA0DACLUgbfwAWAClEXn","url_list":["https://p3-pc.douyinpic.com/img/aweme-avatar/tos-cn-i-0813c001_oUAOAllCz3FDAn89veIA0DACLUgbfwAWAClEXn~c5_168x168.jpeg?from=2956013662"],"width":720,"height":720},"avatar_300x300":{"uri":"300x300/aweme-avatar/tos-cn-i-0813c001_oUAOAllCz3FDAn89veIA0DACLUgbfwAWAClEXn","url_list":["https://p3-pc.douyinpic.com/img/aweme-avatar/tos-cn-i-0813c001_oUAOAllCz3FDAn89veIA0DACLUgbfwAWAClEXn~c5_300x300.jpeg?from=2956013662"],"width":720,"height":720},"relative_users":null,"cha_list":null,"sec_uid":"MS4wLjABAAAAVDlzf48wNZkGL42FsDkdtd2JQ595lYsSXMBc_r3PMNjEDhRec7VG4GJthQlyHJF3","urge_detail":{"user_urged":0},"need_points":null,"homepage_bottom_toast":null,"aweme_hotsoon_auth":1,"aweme_hotsoon_auth_relation":1,"can_set_geofencing":null,"room_id_str":"0","white_cover_url":null,"user_tags":null,"stitch_setting":0,"is_mix_user":false,"enable_nearby_visible":true,"ban_user_functions":[],"aweme_control":{"can_forward":true,"can_share":true,"can_comment":true,"can_show_comment":true},"user_not_show":1,"ky_only_predict":0,"user_not_see":0,"card_entries":null,"signature_display_lines":0,"display_info":null,"follower_request_status":0,"live_status":0,"new_friend_type":0,"is_not_show":false,"card_entries_not_display":null,"card_sort_priority":null,"show_nearby_active":false,"interest_tags":null,"school_category":0,"search_impr":{"entity_id":"2999910723758727"},"link_item_list":null,"user_permissions":null,"offline_info_list":null,"is_cf":0,"is_blocking_v2":false,"is_blocked_v2":false,"close_friend_type":0,"signature_extra":null,"max_follower_count":0,"personal_tag_list":null,"cf_list":null,"im_role_ids":null,"not_seen_item_id_list":null,"verification_permission_ids":null,"contacts_status":2,"risk_notice_text":"","follower_list_secondary_information_struct":null,"endorsement_info_list":null,"text_extra":null,"contrail_list":null,"data_label_list":null,"not_seen_item_id_list_v2":null,"is_ban":false,"special_people_labels":null,"special_follow_status":0,"familiar_visitor_user":null,"live_high_value":0,"awemehts_greet_info":"","avatar_schema_list":null,"profile_mob_params":null,"disable_image_comment_saved":0},"reply_id":"0","user_digged":0,"reply_comment":null,"text_extra":[],"label_text":"","label_type":-1,"reply_comment_total":0,"reply_to_reply_id":"0","is_author_digged":false,"stick_position":0,"user_buried":false,"label_list":null,"is_hot":false,"text_music_info":null,"image_list":null,"is_note_comment":0,"ip_label":"浙江","can_share":true,"item_comment_total":5,"level":1,"video_list":null,"sort_tags":"{\"reply_0\":1,\"eco_level_5\":1}","is_user_tend_to_reply":false,"content_type":1,"is_folded":false,"enter_from":"homepage_hot"},{"cid":"7444672256201491250","text":"求图[抱拳]","aweme_id":"7442568985704402217","create_time":1733347861,"digg_count":0,"status":1,"user":{"uid":"111207464939","short_id":"2058864271","nickname":"小太阳哟🌞","signature":"","avatar_larger":{"uri":"1080x1080/aweme-avatar/mosaic-legacy_1b5890001c3f61127bd12","url_list":["https://p3-pc.douyinpic.com/aweme/1080x1080/aweme-avatar/mosaic-legacy_1b5890001c3f61127bd12.jpeg?from=2956013662"],"width":720,"height":720},"avatar_thumb":{"uri":"100x100/aweme-avatar/mosaic-legacy_1b5890001c3f61127bd12","url_list":["https://p3-pc.douyinpic.com/aweme/100x100/aweme-avatar/mosaic-legacy_1b5890001c3f61127bd12.jpeg?from=2956013662"],"width":720,"height":720},"avatar_medium":{"uri":"720x720/aweme-avatar/mosaic-legacy_1b5890001c3f61127bd12","url_list":["https://p3-pc.douyinpic.com/aweme/720x720/aweme-avatar/mosaic-legacy_1b5890001c3f61127bd12.jpeg?from=2956013662"],"width":720,"height":720},"is_verified":true,"follow_status":0,"aweme_count":0,"following_count":0,"follower_count":0,"favoriting_count":0,"total_favorited":0,"is_block":false,"hide_search":false,"constellation":9,"mate_add_permission":0,"hide_location":false,"weibo_verify":"","custom_verify":"","unique_id":"","familiar_confidence":0,"special_lock":1,"need_recommend":0,"is_binded_weibo":false,"weibo_name":"","weibo_schema":"","weibo_url":"","story_open":false,"story_count":0,"has_facebook_token":false,"has_twitter_token":false,"fb_expire_time":0,"tw_expire_time":0,"has_youtube_token":false,"youtube_expire_time":0,"live_verify":0,"authority_status":0,"verify_info":"","shield_follow_notice":0,"shield_digg_notice":0,"shield_comment_notice":0,"private_relation_list":null,"creator_tag_list":null,"batch_unfollow_contain_tabs":null,"with_commerce_entry":false,"verification_type":1,"enterprise_verify_reason":"","is_ad_fake":false,"batch_unfollow_relation_desc":null,"region":"CN","account_region":"","sync_to_toutiao":0,"commerce_user_level":0,"live_agreement":0,"platform_sync_info":null,"with_shop_entry":false,"is_discipline_member":false,"secret":1,"has_orders":false,"prevent_download":false,"show_image_bubble":false,"geofencing":[],"unique_id_modify_time":1733923240,"video_icon":{"uri":"","url_list":[],"width":720,"height":720},"ins_id":"","google_account":"","youtube_channel_id":"","youtube_channel_title":"","apple_account":0,"with_dou_entry":false,"with_fusion_shop_entry":false,"is_phone_binded":false,"accept_private_policy":false,"twitter_id":"","twitter_name":"","user_canceled":false,"has_email":false,"is_gov_media_vip":false,"live_agreement_time":0,"status":1,"avatar_uri":"aweme-avatar/mosaic-legacy_1b5890001c3f61127bd12","follower_status":0,"neiguang_shield":0,"comment_setting":0,"duet_setting":0,"reflow_page_gid":0,"reflow_page_uid":0,"user_rate":1,"download_setting":-1,"download_prompt_ts":0,"react_setting":0,"live_commerce":false,"cover_url":[{"uri":"c8510002be9a3a61aad2","url_list":["https://p3-pc-sign.douyinpic.com/obj/c8510002be9a3a61aad2?lk3s=b031305e\u0026x-expires=1735131600\u0026x-signature=jvaQz8AzlmBWQKlu6aO10YwgZtw%3D\u0026from=2956013662","https://p9-pc-sign.douyinpic.com/obj/c8510002be9a3a61aad2?lk3s=b031305e\u0026x-expires=1735131600\u0026x-signature=DAqJCzHkayn35rc%2FfquOa1G80AY%3D\u0026from=2956013662"],"width":720,"height":720}],"show_gender_strategy":0,"language":"zh-Hans","has_insights":false,"item_list":null,"user_mode":0,"user_period":0,"has_unread_story":false,"new_story_cover":null,"is_star":false,"cv_level":"","type_label":null,"ad_cover_url":null,"comment_filter_status":0,"avatar_168x168":{"uri":"168x168/aweme-avatar/mosaic-legacy_1b5890001c3f61127bd12","url_list":["https://p3-pc.douyinpic.com/img/aweme-avatar/mosaic-legacy_1b5890001c3f61127bd12~c5_168x168.jpeg?from=2956013662"],"width":720,"height":720},"avatar_300x300":{"uri":"300x300/aweme-avatar/mosaic-legacy_1b5890001c3f61127bd12","url_list":["https://p3-pc.douyinpic.com/img/aweme-avatar/mosaic-legacy_1b5890001c3f61127bd12~c5_300x300.jpeg?from=2956013662"],"width":720,"height":720},"relative_users":null,"cha_list":null,"sec_uid":"MS4wLjABAAAA1tRj2ErK_RsKv-sA7Zp2L_tmxP10crdyxfm8UBi5Jqo","urge_detail":{"user_urged":0},"need_points":null,"homepage_bottom_toast":null,"can_set_geofencing":null,"white_cover_url":null,"user_tags":null,"stitch_setting":0,"is_mix_user":false,"enable_nearby_visible":true,"ban_user_functions":[],"aweme_control":{"can_forward":true,"can_share":true,"can_comment":true,"can_show_comment":true},"user_not_show":1,"ky_only_predict":0,"user_not_see":0,"card_entries":null,"signature_display_lines":0,"display_info":null,"follower_request_status":0,"live_status":0,"new_friend_type":0,"is_not_show":false,"card_entries_not_display":null,"card_sort_priority":null,"show_nearby_active":false,"interest_tags":null,"school_category":0,"search_impr":{"entity_id":"111207464939"},"link_item_list":null,"user_permissions":null,"offline_info_list":null,"is_cf":0,"is_blocking_v2":false,"is_blocked_v2":false,"close_friend_type":0,"signature_extra":null,"max_follower_count":0,"personal_tag_list":null,"cf_list":null,"im_role_ids":null,"not_seen_item_id_list":null,"verification_permission_ids":null,"contacts_status":1,"risk_notice_text":"","follower_list_secondary_information_struct":null,"endorsement_info_list":null,"text_extra":null,"contrail_list":null,"data_label_list":null,"not_seen_item_id_list_v2":null,"is_ban":false,"special_people_labels":null,"special_follow_status":0,"familiar_visitor_user":null,"live_high_value":0,"awemehts_greet_info":"","avatar_schema_list":null,"profile_mob_params":null,"disable_image_comment_saved":0},"reply_id":"0","user_digged":0,"reply_comment":null,"text_extra":[],"label_text":"","label_type":-1,"reply_comment_total":0,"reply_to_reply_id":"0","is_author_digged":false,"stick_position":0,"user_buried":false,"label_list":null,"is_hot":false,"text_music_info":null,"image_list":null,"is_note_comment":0,"ip_label":"陕西","can_share":true,"item_comment_total":5,"level":1,"video_list":null,"sort_tags":"{\"eco_level_3\":1,\"time\":1}","is_user_tend_to_reply":false,"content_type":1,"is_folded":false,"enter_from":"homepage_hot"},{"cid":"7443750360777392915","text":"求图","aweme_id":"7442568985704402217","create_time":1733133194,"digg_count":0,"status":1,"user":{"uid":"52171122426","short_id":"1076718786","nickname":"椎名真白","signature":"","avatar_larger":{"uri":"1080x1080/aweme-avatar/tos-cn-i-0813_oIFqrALnKAS9APyAEtRFA9WCNIofIuaAAUegED","url_list":["https://p3-pc.douyinpic.com/aweme/1080x1080/aweme-avatar/tos-cn-i-0813_oIFqrALnKAS9APyAEtRFA9WCNIofIuaAAUegED.jpeg?from=2956013662"],"width":720,"height":720},"avatar_thumb":{"uri":"100x100/aweme-avatar/tos-cn-i-0813_oIFqrALnKAS9APyAEtRFA9WCNIofIuaAAUegED","url_list":["https://p3-pc.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-i-0813_oIFqrALnKAS9APyAEtRFA9WCNIofIuaAAUegED.jpeg?from=2956013662"],"width":720,"height":720},"avatar_medium":{"uri":"720x720/aweme-avatar/tos-cn-i-0813_oIFqrALnKAS9APyAEtRFA9WCNIofIuaAAUegED","url_list":["https://p3-pc.douyinpic.com/aweme/720x720/aweme-avatar/tos-cn-i-0813_oIFqrALnKAS9APyAEtRFA9WCNIofIuaAAUegED.jpeg?from=2956013662"],"width":720,"height":720},"is_verified":true,"follow_status":0,"aweme_count":0,"following_count":0,"follower_count":0,"favoriting_count":0,"total_favorited":0,"is_block":false,"hide_search":false,"constellation":9,"mate_add_permission":0,"hide_location":false,"weibo_verify":"","custom_verify":"","unique_id":"","familiar_confidence":0,"special_lock":1,"need_recommend":0,"is_binded_weibo":false,"weibo_name":"","weibo_schema":"","weibo_url":"","story_open":false,"story_count":0,"has_facebook_token":false,"has_twitter_token":false,"fb_expire_time":0,"tw_expire_time":0,"has_youtube_token":false,"youtube_expire_time":0,"room_id":0,"live_verify":0,"authority_status":0,"verify_info":"","shield_follow_notice":0,"shield_digg_notice":0,"shield_comment_notice":0,"private_relation_list":null,"creator_tag_list":null,"batch_unfollow_contain_tabs":null,"with_commerce_entry":false,"verification_type":1,"enterprise_verify_reason":"","is_ad_fake":false,"batch_unfollow_relation_desc":null,"region":"CN","account_region":"","sync_to_toutiao":0,"commerce_user_level":0,"live_agreement":0,"platform_sync_info":null,"with_shop_entry":false,"is_discipline_member":false,"secret":0,"has_orders":false,"prevent_download":false,"show_image_bubble":false,"geofencing":[],"unique_id_modify_time":1733923240,"video_icon":{"uri":"","url_list":[],"width":720,"height":720},"ins_id":"","google_account":"","youtube_channel_id":"","youtube_channel_title":"","apple_account":0,"with_dou_entry":false,"with_fusion_shop_entry":false,"is_phone_binded":false,"accept_private_policy":false,"twitter_id":"","twitter_name":"","user_canceled":false,"has_email":false,"is_gov_media_vip":false,"live_agreement_time":0,"status":1,"avatar_uri":"aweme-avatar/tos-cn-i-0813_oIFqrALnKAS9APyAEtRFA9WCNIofIuaAAUegED","follower_status":0,"neiguang_shield":0,"comment_setting":0,"duet_setting":0,"reflow_page_gid":0,"reflow_page_uid":0,"user_rate":1,"download_setting":-1,"download_prompt_ts":0,"react_setting":0,"live_commerce":false,"cover_url":[{"uri":"c8510002be9a3a61aad2","url_list":["https://p3-pc-sign.douyinpic.com/obj/c8510002be9a3a61aad2?lk3s=b031305e\u0026x-expires=1735131600\u0026x-signature=jvaQz8AzlmBWQKlu6aO10YwgZtw%3D\u0026from=2956013662","https://p9-pc-sign.douyinpic.com/obj/c8510002be9a3a61aad2?lk3s=b031305e\u0026x-expires=1735131600\u0026x-signature=DAqJCzHkayn35rc%2FfquOa1G80AY%3D\u0026from=2956013662"],"width":720,"height":720}],"show_gender_strategy":0,"language":"zh-Hans","has_insights":false,"item_list":null,"user_mode":0,"user_period":0,"has_unread_story":false,"new_story_cover":null,"is_star":false,"cv_level":"","type_label":null,"ad_cover_url":null,"comment_filter_status":0,"avatar_168x168":{"uri":"168x168/aweme-avatar/tos-cn-i-0813_oIFqrALnKAS9APyAEtRFA9WCNIofIuaAAUegED","url_list":["https://p3-pc.douyinpic.com/img/aweme-avatar/tos-cn-i-0813_oIFqrALnKAS9APyAEtRFA9WCNIofIuaAAUegED~c5_168x168.jpeg?from=2956013662"],"width":720,"height":720},"avatar_300x300":{"uri":"300x300/aweme-avatar/tos-cn-i-0813_oIFqrALnKAS9APyAEtRFA9WCNIofIuaAAUegED","url_list":["https://p3-pc.douyinpic.com/img/aweme-avatar/tos-cn-i-0813_oIFqrALnKAS9APyAEtRFA9WCNIofIuaAAUegED~c5_300x300.jpeg?from=2956013662"],"width":720,"height":720},"relative_users":null,"cha_list":null,"sec_uid":"MS4wLjABAAAAF3KQ0kTEjGU1hiODHLTcI77ymNRYuFkH23J3dJ4vE_I","urge_detail":{"user_urged":0},"need_points":null,"homepage_bottom_toast":null,"aweme_hotsoon_auth":1,"can_set_geofencing":null,"room_id_str":"0","white_cover_url":null,"user_tags":null,"stitch_setting":0,"is_mix_user":false,"enable_nearby_visible":true,"ban_user_functions":[],"aweme_control":{"can_forward":true,"can_share":true,"can_comment":true,"can_show_comment":true},"user_not_show":1,"ky_only_predict":0.84555215,"user_not_see":0,"card_entries":null,"signature_display_lines":0,"display_info":null,"follower_request_status":0,"live_status":0,"new_friend_type":0,"is_not_show":false,"card_entries_not_display":null,"card_sort_priority":null,"show_nearby_active":false,"interest_tags":null,"school_category":0,"search_impr":{"entity_id":"52171122426"},"link_item_list":null,"user_permissions":null,"offline_info_list":null,"is_cf":0,"is_blocking_v2":false,"is_blocked_v2":false,"close_friend_type":0,"signature_extra":null,"max_follower_count":0,"personal_tag_list":null,"cf_list":null,"im_role_ids":null,"not_seen_item_id_list":null,"verification_permission_ids":null,"contacts_status":1,"risk_notice_text":"","follower_list_secondary_information_struct":null,"endorsement_info_list":null,"text_extra":null,"contrail_list":null,"data_label_list":null,"not_seen_item_id_list_v2":null,"is_ban":false,"special_people_labels":null,"special_follow_status":0,"familiar_visitor_user":null,"live_high_value":0,"awemehts_greet_info":"","avatar_schema_list":null,"profile_mob_params":null,"disable_image_comment_saved":0},"reply_id":"0","user_digged":0,"reply_comment":null,"text_extra":[],"label_text":"","label_type":-1,"reply_comment_total":0,"reply_to_reply_id":"0","is_author_digged":false,"stick_position":0,"user_buried":false,"label_list":null,"is_hot":false,"text_music_info":null,"image_list":null,"is_note_comment":0,"ip_label":"湖南","can_share":true,"item_comment_total":5,"level":1,"video_list":null,"sort_tags":"{\"eco_level_3\":1,\"time\":1}","is_user_tend_to_reply":false,"content_type":1,"is_folded":false,"enter_from":"search_middle_page"},{"cid":"7442620147284181775","text":"求图","aweme_id":"7442568985704402217","create_time":1732870044,"digg_count":0,"status":1,"user":{"uid":"382243831034238","short_id":"2800200310","nickname":"得小靓仔","signature":"","avatar_larger":{"uri":"1080x1080/aweme-avatar/tos-cn-i-0813c001_oAiDFCrfjAkATAiqEAALEf44DOKTnIAWKA79gT","url_list":["https://p3-pc.douyinpic.com/aweme/1080x1080/aweme-avatar/tos-cn-i-0813c001_oAiDFCrfjAkATAiqEAALEf44DOKTnIAWKA79gT.jpeg?from=2956013662"],"width":720,"height":720},"avatar_thumb":{"uri":"100x100/aweme-avatar/tos-cn-i-0813c001_oAiDFCrfjAkATAiqEAALEf44DOKTnIAWKA79gT","url_list":["https://p3-pc.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-i-0813c001_oAiDFCrfjAkATAiqEAALEf44DOKTnIAWKA79gT.jpeg?from=2956013662"],"width":720,"height":720},"avatar_medium":{"uri":"720x720/aweme-avatar/tos-cn-i-0813c001_oAiDFCrfjAkATAiqEAALEf44DOKTnIAWKA79gT","url_list":["https://p3-pc.douyinpic.com/aweme/720x720/aweme-avatar/tos-cn-i-0813c001_oAiDFCrfjAkATAiqEAALEf44DOKTnIAWKA79gT.jpeg?from=2956013662"],"width":720,"height":720},"is_verified":true,"follow_status":0,"aweme_count":0,"following_count":0,"follower_count":0,"favoriting_count":0,"total_favorited":0,"is_block":false,"hide_search":true,"constellation":11,"mate_add_permission":0,"hide_location":false,"weibo_verify":"","custom_verify":"","unique_id":"dexiaoliangzai","familiar_confidence":0,"special_lock":1,"need_recommend":0,"is_binded_weibo":false,"weibo_name":"","weibo_schema":"","weibo_url":"","story_open":false,"story_count":0,"has_facebook_token":false,"has_twitter_token":false,"fb_expire_time":0,"tw_expire_time":0,"has_youtube_token":false,"youtube_expire_time":0,"room_id":0,"live_verify":0,"authority_status":0,"verify_info":"","shield_follow_notice":0,"shield_digg_notice":0,"shield_comment_notice":0,"private_relation_list":null,"creator_tag_list":null,"batch_unfollow_contain_tabs":null,"with_commerce_entry":false,"verification_type":1,"enterprise_verify_reason":"","is_ad_fake":false,"batch_unfollow_relation_desc":null,"region":"CN","account_region":"","sync_to_toutiao":0,"commerce_user_level":0,"live_agreement":0,"platform_sync_info":null,"with_shop_entry":false,"is_discipline_member":false,"secret":0,"has_orders":false,"prevent_download":false,"show_image_bubble":false,"geofencing":[],"unique_id_modify_time":1733923240,"video_icon":{"uri":"","url_list":[],"width":720,"height":720},"ins_id":"","google_account":"","youtube_channel_id":"","youtube_channel_title":"","apple_account":0,"with_dou_entry":false,"with_fusion_shop_entry":false,"is_phone_binded":false,"accept_private_policy":false,"twitter_id":"","twitter_name":"","user_canceled":false,"has_email":false,"is_gov_media_vip":false,"live_agreement_time":0,"status":1,"avatar_uri":"aweme-avatar/tos-cn-i-0813c001_oAiDFCrfjAkATAiqEAALEf44DOKTnIAWKA79gT","follower_status":0,"neiguang_shield":0,"comment_setting":0,"duet_setting":0,"reflow_page_gid":0,"reflow_page_uid":0,"user_rate":1,"download_setting":-1,"download_prompt_ts":0,"react_setting":0,"live_commerce":false,"cover_url":[{"uri":"c8510002be9a3a61aad2","url_list":["https://p3-pc-sign.douyinpic.com/obj/c8510002be9a3a61aad2?lk3s=b031305e\u0026x-expires=1735131600\u0026x-signature=jvaQz8AzlmBWQKlu6aO10YwgZtw%3D\u0026from=2956013662","https://p9-pc-sign.douyinpic.com/obj/c8510002be9a3a61aad2?lk3s=b031305e\u0026x-expires=1735131600\u0026x-signature=DAqJCzHkayn35rc%2FfquOa1G80AY%3D\u0026from=2956013662"],"width":720,"height":720}],"show_gender_strategy":0,"language":"zh-Hans","has_insights":false,"item_list":null,"user_mode":0,"user_period":0,"has_unread_story":false,"new_story_cover":null,"is_star":false,"cv_level":"","type_label":null,"ad_cover_url":null,"comment_filter_status":0,"avatar_168x168":{"uri":"168x168/aweme-avatar/tos-cn-i-0813c001_oAiDFCrfjAkATAiqEAALEf44DOKTnIAWKA79gT","url_list":["https://p3-pc.douyinpic.com/img/aweme-avatar/tos-cn-i-0813c001_oAiDFCrfjAkATAiqEAALEf44DOKTnIAWKA79gT~c5_168x168.jpeg?from=2956013662"],"width":720,"height":720},"avatar_300x300":{"uri":"300x300/aweme-avatar/tos-cn-i-0813c001_oAiDFCrfjAkATAiqEAALEf44DOKTnIAWKA79gT","url_list":["https://p3-pc.douyinpic.com/img/aweme-avatar/tos-cn-i-0813c001_oAiDFCrfjAkATAiqEAALEf44DOKTnIAWKA79gT~c5_300x300.jpeg?from=2956013662"],"width":720,"height":720},"relative_users":null,"cha_list":null,"sec_uid":"MS4wLjABAAAA2t4S0p5fXvKCSnWwLVqPEvzM83J-GEzlGEk8cOTNRd8","urge_detail":{"user_urged":0},"need_points":null,"homepage_bottom_toast":null,"aweme_hotsoon_auth":1,"aweme_hotsoon_auth_relation":1,"can_set_geofencing":null,"room_id_str":"0","white_cover_url":null,"user_tags":null,"stitch_setting":0,"is_mix_user":true,"enable_nearby_visible":false,"ban_user_functions":[],"aweme_control":{"can_forward":true,"can_share":true,"can_comment":true,"can_show_comment":true},"user_not_show":1,"ky_only_predict":0.8697049,"user_not_see":0,"card_entries":null,"signature_display_lines":0,"display_info":null,"follower_request_status":0,"live_status":0,"new_friend_type":0,"is_not_show":false,"card_entries_not_display":null,"card_sort_priority":null,"show_nearby_active":false,"interest_tags":null,"school_category":2,"search_impr":{"entity_id":"382243831034238"},"link_item_list":null,"user_permissions":null,"offline_info_list":null,"is_cf":0,"is_blocking_v2":false,"is_blocked_v2":false,"close_friend_type":0,"signature_extra":null,"max_follower_count":0,"personal_tag_list":null,"cf_list":null,"im_role_ids":null,"not_seen_item_id_list":null,"verification_permission_ids":null,"contacts_status":1,"risk_notice_text":"","follower_list_secondary_information_struct":null,"endorsement_info_list":null,"text_extra":null,"contrail_list":null,"data_label_list":null,"not_seen_item_id_list_v2":null,"is_ban":false,"special_people_labels":null,"special_follow_status":0,"familiar_visitor_user":null,"live_high_value":0,"awemehts_greet_info":"","avatar_schema_list":null,"profile_mob_params":null,"disable_image_comment_saved":0},"reply_id":"0","user_digged":0,"reply_comment":null,"text_extra":[],"label_text":"","label_type":-1,"reply_comment_total":0,"reply_to_reply_id":"0","is_author_digged":false,"sticker":{"id":7384655816948711487,"width":1247,"height":750,"static_url":{"uri":"tos-cn-o-0812/oQMvnxvZARAkVKDrBbEpAwVBpISgiOCAI7sui","url_list":["https://p3-sign.douyinpic.com/obj/tos-cn-o-0812/oQMvnxvZARAkVKDrBbEpAwVBpISgiOCAI7sui?lk3s=7b078dd2\u0026x-expires=1733943600\u0026x-signature=qeOrAzmJssZLswJhyDUygiHDLG8%3D\u0026from=2064092626\u0026s=sticker_comment\u0026se=false\u0026sc=sticker_heif\u0026biz_tag=aweme_comment\u0026l=20241211212040C1994FFF1B2BA31ADA83","https://p11-sign.douyinpic.com/obj/tos-cn-o-0812/oQMvnxvZARAkVKDrBbEpAwVBpISgiOCAI7sui?lk3s=7b078dd2\u0026x-expires=1733943600\u0026x-signature=EGbgdrHEKp2w6xXDbdmGOpLJtuI%3D\u0026from=2064092626\u0026s=sticker_comment\u0026se=false\u0026sc=sticker_heif\u0026biz_tag=aweme_comment\u0026l=20241211212040C1994FFF1B2BA31ADA83","https://p26-sign.douyinpic.com/obj/tos-cn-o-0812/oQMvnxvZARAkVKDrBbEpAwVBpISgiOCAI7sui?lk3s=7b078dd2\u0026x-expires=1733943600\u0026x-signature=RMWNEd1Fc3YDwwgvxuSG2QjObLs%3D\u0026from=2064092626\u0026s=sticker_comment\u0026se=false\u0026sc=sticker_heif\u0026biz_tag=aweme_comment\u0026l=20241211212040C1994FFF1B2BA31ADA83"],"width":1247,"height":750},"animate_url":{"uri":"tos-cn-o-0812/oQMvnxvZARAkVKDrBbEpAwVBpISgiOCAI7sui","url_list":["https://p3-sign.douyinpic.com/obj/tos-cn-o-0812/oQMvnxvZARAkVKDrBbEpAwVBpISgiOCAI7sui?lk3s=7b078dd2\u0026x-expires=1733943600\u0026x-signature=qeOrAzmJssZLswJhyDUygiHDLG8%3D\u0026from=2064092626\u0026s=sticker_comment\u0026se=false\u0026sc=sticker_heif\u0026biz_tag=aweme_comment\u0026l=20241211212040C1994FFF1B2BA31ADA83","https://p11-sign.douyinpic.com/obj/tos-cn-o-0812/oQMvnxvZARAkVKDrBbEpAwVBpISgiOCAI7sui?lk3s=7b078dd2\u0026x-expires=1733943600\u0026x-signature=EGbgdrHEKp2w6xXDbdmGOpLJtuI%3D\u0026from=2064092626\u0026s=sticker_comment\u0026se=false\u0026sc=sticker_heif\u0026biz_tag=aweme_comment\u0026l=20241211212040C1994FFF1B2BA31ADA83","https://p26-sign.douyinpic.com/obj/tos-cn-o-0812/oQMvnxvZARAkVKDrBbEpAwVBpISgiOCAI7sui?lk3s=7b078dd2\u0026x-expires=1733943600\u0026x-signature=RMWNEd1Fc3YDwwgvxuSG2QjObLs%3D\u0026from=2064092626\u0026s=sticker_comment\u0026se=false\u0026sc=sticker_heif\u0026biz_tag=aweme_comment\u0026l=20241211212040C1994FFF1B2BA31ADA83"],"width":1247,"height":750},"sticker_type":2,"origin_package_id":-110797915383,"id_str":"7384655816948711487","author_sec_uid":""},"stick_position":0,"user_buried":false,"label_list":null,"is_hot":false,"text_music_info":null,"image_list":null,"is_note_comment":0,"ip_label":"山东","can_share":true,"item_comment_total":5,"level":1,"video_list":null,"sort_tags":"{\"time\":1,\"eco_level_3\":1}","is_first_visitor_cmt":true,"is_user_tend_to_reply":false,"content_type":3,"is_folded":false,"enter_from":"homepage_hot"}],"cursor":20,"has_more":0,"reply_style":2,"total":5,"extra":{"now":1733923240000,"fatal_item_ids":null},"log_pb":{"impr_id":"20241211212040C1994FFF1B2BA31ADA83"},"hotsoon_filtered_count":0,"user_commented":0,"fast_response_comment":{"constant_response_words":["赞","比心","加油"],"timed_response_words":["早上好","下午好","晚上好"]},"comment_config":{},"general_comment_config":{},"show_management_entry_point":0,"comment_common_data":"MS4wLjAAAAAAIMiuka8jZ7EghENVXwq6T8CxM3So5i5y9_-8ql9oKTuAHIkZRX6QOMMpr1h-Dt6HBDfmmFFfHrxfHrqy9vfCv92-AMzYQiFBSyngVZS_9s_hnACVRUfJMytuXI-Zlz7vYtD96_h7xKEd1JDg1yCBoQaVSm44sa4LoXxN_Y797JmVO6UqHtKnFirARW0Ts81f2GhqtGspb_4oAOTPDAg9Eswot3qCu_aGifYO4ijoUtewFrW9eLdUGEDvOQ9bPDoMEagTuJ1mn1W4BzvkcLyrcyaeV85zSkD4qmLstxtwdjUKGKgRzEo_uHHtybR8QP5aYFSLJ3P4sW6pOZX_ldf7JkyW6E2muL4Yc-ZkPKTwaIC8JgDlMjN8W05RhxKYE-HONQza0TaMlNYHyUyAd-do25sbWaIVr5dnT_OTUHWP9at6RBa_0sy2Yd9xcAoRM_lN-GWclWck9UmidsknxQKFUAoPF2rPRKhs3WDx9bUwvHvL-Ejaeh0PAe_mxaZy08J23JXZIF6ffYWisGNqdV-jva2sPGwCRxnYMpMtG6UV8SlrdYUnP8h2iNQufQWrXyw3YjOQoH9Zz5srXL0EyWcQ0NLXNAmEjD3o1D2jtS_KSPAW_PGvY4dSIA0k2C9XjZ-ndaA4cyEVForpDHkvB13iyctK6wi5Ezf11H2Pf-xJ2dMpPpySy3YIFk2G-CnE-ijRGIgbe7HnkWGPLv_16Ld1bJMWSUX4HlLEvUqnqIjGG-k2lO9ss1MH0-k81kMrwL-FZ_aHaT5vX0KpibYRaPtPVQuuXbL_26nxWH4mAxO57jvrEFdMVVF9E-ytVZVW4rrAJX6hW680KUkRIsOTbwJIyg-U9B-Ikzshd6sGK5LmdbQR5yPdnkv7euftmkgoNp1NSLdYyW93jUC0kkzkvpAlJ27TZCaVFVgyJNkz2KedKBClsBTESu-B74W_NeEMw-j0cxpqHWHbvt2I_v7I3y26lMMHiy4_-icK8pPGB2MryvaO-EH79Ejgz_EWbr6w3PAEgkPn30byQtw5ZWPW4c2EkftdR7O_6IMaGC-bdPk548zYku68kG_t4X77jdtXrn-HJz0x4G1x09equ86Xd3QymFpXvCCjyCiVXtwQ0dPXqi33VjE7akZq4yWOMLeZUiYhLvJOx7RDyEBS9zjcHn7wPHY6KOmQadxbo7woArLC-68PDyaZDsTRGysjuiZh9xPrKeE_BEPCsoixlNJu4ysribj32KGNecijCrJOD8GgVjagFj47b3UVyr0faxL7kF91OWHoE7Nkp27-q63bS0NJpFSptrvHgbWkOlTpqYhV0zq4_5F11Z3TjPHO07Pq84wGrwhRfJvxl9fNCRjQfv9PO8pX1iS7k96EMUtKGpNmbbyzcMYIPmiIP-n7eDXpMxWZ8_mZo-zXQ1dtMOp4qj1i_DS76xWNc6BQIWJKH3JAyxcm8paIFMBn7M0GAtMYVfns-yTXLBlRfjnzTkJCKxrPa2YEaQtlF5e2rDW5vRMuKrYUApwC_qlV-CpdIUHhod6Hb6_7ROJFS0DELXpmRgahcnFzPnlnoOcCkdUd99pZ97Vve-dg4rJjCJFI45F9bkWyLUYnrDHz1BJda83d1gnc6rdO-jpObFbDPPrz1l-2wT6-AHW109tO5da7yGlKEtAjzcDnj50J8C9jOXoB9LSypoTGU7aHnqOB16jUDUbi14u2acrnIpvdE9hPnnL8VKTduUC1KC8X_-uM2CZBWHlUSeNTq3WVU9RYRD20jvhiLa4a0V-4a5rZdWKP8N4rNvxD1iPDTJd9dLpxHdZg_vHccfI03hve0Erf0DJcE2lF43paQIoF9Yn-iM_XtNp5zWfCVxbs-MSe6UQqflvKICNjfvK1-JXfQ9t-SIr4jFkBcNVw7NvRAFlvrglfMoM9sLvjcqTI7il8fXi76HTShAm0_WQbldU3q1v7CSi_2h46LHXLn_oKbaVm01nd31R9mDA6I7AmVoDCBFlt8Frm3L-8iJUcWJrUgtpa2YzJSXIWdxlGM-z03K4NyeLddIU05YCq34zZQC3HfTQzBpiiJc850vuGY_xIoaDiNlqSM7xRT6lmrgN8YMioX-8akV5766gntlQmHPlo1FSe_60kRukg2xqD9WRngOi8J4yP5eyg1dr_CELxiwpNsivTWa188DtIgsf8qkAbUfAeJfZlEDPiPfrglzOyget9ZZUdabWxduJkKvJtGq1MGXk5uWokZb0ElFAs4_0DaQ7ZVT94HXZbMJU9Q0xYeVVGtRmsxNXcjDo16zjQcVYAwrgOSk_c6T9ywvLGrWjilWKW83fdQ6squuqs8x0y8PwsuCUvnwVt5tYdTyy_RoYCLzZmQHYmMmysgPeVxGRf7K4_cQLGY-DP5-NbB3aONXQvGdJBZ8HHThzRfQHTHi87fFBO0M8fAdkTh4JXMgEYzpxvZHZrmw3U4bi0Sfilb-3SHSSIqpsDq5MaHanZV9F_RrR47ciUO-qi7em2lGH_GcpPsoCFKXVyB2l8OqOqgbxnrhGGqQiXKseyAcgiZhkp4ONltYw2zAC9DrME5pk98ejDbs5PyZAAU6vBQdi4Q-GGaej6B3a1snqZBn01z9qkU3Lqr2F7ycJyWwzlDprG_8kugH7YQPtAH8X6Ev1deDTeLfxkGHO6xBoPPNTyUQsgk_xTZ2YWUSRQDNdmROhFXksxDe6IAEy_1byl0OkfVjmOt9Al2-cqWZaycl4BzHK2IEQcfwZpC-xC","folded_comment_count":0}

简化后的请求数据包

1
2
3
4
5
6
GET /aweme/v1/web/comment/list/?aweme_id=7442568985704402217&count=20&a_bogus=mXURgFt7QqRjcdKtmCTie3%2FUR8dANsuyhFidRF5U7OiTYHtawYNhkcckrxLMLu7%2F1bBkkF27ExUMGnncPz7hZF9kwmkkuMiWXGA5nSmo01H4Yav23q6NCUUzzX0e854qeQVCiAgVhUHL1fV-wqQm%2FQIJ7KcKQmWhOpxfk2YSP9Gg1K8I21MTiM0gHfnqQscDuSlfej%3D%3D HTTP/2
Host: www.douyin.com
Cookie: ttwid=1%7CTEoFoevVYlpx89roxYxTr4jjE1rFHVq-xoasGGU-CVs%7C1733922604%7C6f2908e9c92faef61b81364dc3185e425c792abe40164446fc52f2e2ac403862
Pragma: no-cache
Referer: https://www.douyin.com/search/%E6%A4%8E%E5%90%8D%E7%9C%9F%E7%99%BD%E5%A3%81%E7%BA%B8?modal_id=7442568985704402217&type=general

https://www.douyin.com/aweme/v1/web/comment/list/?aweme_id=7435961071858453820&cursor=120&count=20&a_bogus=mXURgFt7QqRjcdKtmCTie3%2FUR8dANsuyhFidRF5U7OiTYHtawYNhkcckrxLMLu7%2F1bBkkF27ExUMGnncPz7hZF9kwmkkuMiWXGA5nSmo01H4Yav23q6NCUUzzX0e854qeQVCiAgVhUHL1fV-wqQm%2FQIJ7KcKQmWhOpxfk2YSP9Gg1K8I21MTiM0gHfnqQscDuSlfej%3D%3D

该接口是第一层的评论,只有一部分,全部爬下来和总数是对不上的

还有一部分评论在评论的回复中,接口为

https://www.douyin.com/aweme/v1/web/comment/list/reply/?item_id=7435961071858453820&cursor=0&count=20&comment_id=7436651547679556352&a_bogus=mXURgFt7QqRjcdKtmCTie3%2FUR8dANsuyhFidRF5U7OiTYHtawYNhkcckrxLMLu7%2F1bBkkF27ExUMGnncPz7hZF9kwmkkuMiWXGA5nSmo01H4Yav23q6NCUUzzX0e854qeQVCiAgVhUHL1fV-wqQm%2FQIJ7KcKQmWhOpxfk2YSP9Gg1K8I21MTiM0gHfnqQscDuSlfej%3D%3D

其中把item_id就是aweme_id,然后comment_id为存在回复的评论的id

有回复的评论中,有一个reply_comment_total字段,显示了哪些评论是有回复的,且回复数量是多少,

评论保存格式

待处理

待处理:

    1. 图片回复
      • (文字+图片)图片在(medium_url) comment[“image_list”][“origin_url”] 中, 图片链接需要x-expires和x-signature
      • (文字+图片表情)图片表情在animate_url comment[“sticker”][“animate_url”]
    1. 评论层次关系,回复关系

      /aweme/v1/web/comment/list 也可以仅需要cookie中的sessionid_ss,但是也可以仅需要cookie中的ttwid

      image-20241214002517816

      image-20241214002641048

      /aweme/v1/web/comment/list/reply/ 仅需要cookie中的 sessionid_ss ,但是ttwid在此不生效

      image-20241214002533952

    1. 自助登录

    登录分3种方式,扫码登录,验证码登录,密码登录。这里我想应该就做扫码登录和验证码登录,密码登录就算了,肯定没人想在这样的软件上输入自己的密码,然后实现方式上,目前还是先排除selenium。

    • 扫码登录:

    image-20241226163209156

    • 验证码登录:
    1. 评论点赞数:digg_count
    1. 评论回复数:reply_comment_total
    1. emoji 表情,可以使用如下方法输出,要看是否有这个需求,emoji在评论正文,评论用户昵称,评论用户签名中有出现
    1
    2
    3
    emoji_bytes = b'\xE2\x98\x80\xEF\xB8\x8F'
    emoji_char = emoji_bytes.decode('utf-8')
    print(emoji_char)
    1. 另外一种表情,应该是字节自己的emoji,无法用hex显示,需要去分析表情的url规律生成,同样需要x-expires和x-signature
      • 解析视频链接 通过多种方式解析获取到视频id
      • 分批次获取评论,控制参数:视频id,光标,一次获取的数量(最多50)
      • 保存文件
    1. 自动解析视频地址获取视频id
    1. 添加代理功能

验证码登录

验证码登录分两步,1.发送验证码,2.验证验证码并获取Cookie

发送验证码的数据包最小如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
POST /send_activation_code/v2/ HTTP/2
Host: sso.douyin.com
Content-Length: 87
Pragma: no-cache
Cache-Control: no-cache
Sec-Ch-Ua-Platform: "macOS"
Sec-Ch-Ua: "Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"
Sec-Ch-Ua-Mobile: ?0
Origin: https://www.douyin.com
Sec-Fetch-Site: same-site
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://www.douyin.com/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Priority: u=1, i

mix_mode=1&mobile=2e3d3325343c35323634373c313730&type=3731&is6Digits=1&fixed_mix_mode=1

只有一个mobile,加密函数在https://lf-douyin-pc-web.douyinstatic.com/obj/douyin-pc-web/ies/douyin_web/async/3713.5ad2c38e.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function(t, e) {  
var n, o = 0, i = 0;
if ("object" != typeof t || !e || e.length <= 0)
return t;
for (var a = r({
mix_mode: o
}, t), c = 0, u = e.length; c < u; ++c)
void 0 !== (n = a[e[c]]) && (o |= 1,
i |= 1,
a[e[c]] = s(n));
return a.mix_mode = o,
a.fixed_mix_mode = i,
a
}

image-20241216205012200

其中的s(n)就是加密手机号的过程。跟进后是如下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var c = function(t) {
for (var e, n = t.toString(), r = [], o = 0; o < n.length; o++)
0 <= (e = n.charCodeAt(o)) && e <= 127 ? r.push(e) : 128 <= e && e <= 2047 ? (r.push(192 | 31 & e >> 6),
r.push(128 | 63 & e)) : (2048 <= e && e <= 55295 || 57344 <= e && e <= 65535) && (r.push(224 | 15 & e >> 12),
r.push(128 | 63 & e >> 6),
r.push(128 | 63 & e));
for (var i = 0; i < r.length; i++)
r[i] &= 255;
return r
}
, s = function(t) {
var e = []
, n = [];
if (void 0 === t)
return "";
n = c(t);
for (var r = 0, o = n.length; r < o; ++r)
e.push((5 ^ n[r]).toString(16));
return e.join("")
}
  1. 函数 c:
    • 这个函数接受一个字符串 t 作为输入。
    • 它将字符串转换为 UTF-8 编码的字节数组。
    • 对于每个字符,根据其 Unicode 编码值的不同范围,将其转换为相应的 UTF-8 字节序列。
    • 最后返回一个包含这些字节的数组。
  2. 函数 s:
    • 这个函数接受一个字符串 t 作为输入。
    • 它首先调用函数 c 将字符串转换为 UTF-8 字节数组。
    • 然后对每个字节进行异或操作(与 5 异或)。
    • 最后将每个处理后的字节转换为十六进制字符串,并将这些字符串连接成一个最终的结果字符串。

这里的重点其实就是与5异或,这里借助一下AI生成python版本的代码(顺带生成一些解码的)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
def encode_phone(t):
"""
编码电话号码
将输入字符串编码为 UTF-8 字节序列,然后对每个字节进行异或操作(与 5 异或),
最后将结果转换为十六进制字符串。
"""
if t is None:
return ""

# 将字符串编码为 UTF-8 字节序列
utf8_bytes = t.encode('utf-8')
encrypted_bytes = []

for byte in utf8_bytes:
if 0 <= byte <= 127:
encrypted_bytes.append(byte ^ 5)
elif 128 <= byte <= 2047:
# 处理两字节 UTF-8 编码
encrypted_bytes.append((192 | (31 & (byte >> 6))) ^ 5)
encrypted_bytes.append((128 | (63 & byte)) ^ 5)
elif (2048 <= byte <= 55295) or (57344 <= byte <= 65535):
# 处理三字节 UTF-8 编码
encrypted_bytes.append((224 | (15 & (byte >> 12))) ^ 5)
encrypted_bytes.append((128 | (63 & (byte >> 6))) ^ 5)
encrypted_bytes.append((128 | (63 & byte)) ^ 5)

# 将加密后的字节转换为十六进制字符串
hex_string = ''.join(f'{byte:02x}' for byte in encrypted_bytes)
return hex_string

def decode_phone(hex_string):
"""
解码电话号码
将给定的十六进制字符串解码为原始的电话号码字符串
解码过程包括将十六进制字符串转换为字节数组,然后对每个字节进行逆向的异或操作,
最后将字节数组解码回原始字符串
"""
# 将十六进制字符串转换为字节数组
bytes_array = bytes.fromhex(hex_string)
# 对每个字节进行逆向的异或操作
# 将十六进制字符串转换为字节数组
bytes_array = bytes.fromhex(hex_string)
# 对每个字节进行逆向的异或操作
decrypted_bytes = [(byte ^ 5) for byte in bytes_array]
# 将字节数组解码回原始字符串
original_string = bytes(decrypted_bytes).decode('utf-8')
return original_string

但是发现验证码登录后还是要扫码登录验证身份,就很离谱,先不写了,去tm的

扫码登录

二维码的生成有两个接口

https://sso.douyin.com/get_qrcode/?service=https%3A%2F%2Fwww.douyin.com

https://sso.douyin.com/check_qrconnect/?service=https%3A%2F%2Fwww.douyin.com

第一个是点击扫描登录时发出的请求,用户生成第一个二维码qrcode,同时生成一个token,以便第二个接口使用。

第二个是接口会不断请求,以判断二维码是否过期,当过期后就会生成新的二维码qrcode,同时也返回一个token,供后续的请求查询二维码是否过期,如此以往。

其中第二个接口返回的状态如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 未过期,未扫码
{"data":{"status":"1"},"description":"","error_code":0,"message":"success"}

# 已扫码
{"data":{"status":"2"},"description":"","error_code":0,"message":"success"}

# 可以直接登录进行跳转
{"data":{"extra":"","redirect_url":"https://www.douyin.com/login/?next=https%3A%2F%2Fwww.douyin.com\u0026ticket=b037b4f119c5244374e13d7fbe6a73a4_hl","status":"3"},"description":"","error_code":0,"message":"success"}

# 异常(还不知道为什么)
{"description":"系统繁忙,请重启应用或刷新页面后重试","error_code":2156}

# 异常,
{"description":"访问太频繁,请稍后再试","error_code":7}

# 身份验证
{"account_flow":"verify","biz_params":{"passport_mfa_retry_tag":"1"},"common_params":{"new_verify_flow":""},"description":"为保障你的账号安全,请前往抖音APP完成验证后再进行登录","encrypt_uid":"FwEIx5eQAp……DVA+5fUwh12","error_code":2046,"event_params":{"log_id":"202412……E1171594","verify_reason":"ato","verify_scene":"qr_connect"},"extra_params":{"log_id":"202412……E1171594"},"pack_verify_way":true,"schema":"sslocal://webview/?hide_nav_bar=1\u0026should_full_screen=1\u0026disable_bounce=1\u0026status_font_mode=1\u0026block_back_press=1","url":"https://auth.zijieapi.com/ucenter_web/app/second_verification_web/dist/index.umd.production.js","user_info":{"avatar_url":"https://p11.douyinpic.com/aweme/1080x1080/aweme-avatar/9AsffA.jpeg?from=4010531038","nickname":"temin","mobile_info":null},"verify_scene_desc":"为保证帐号安全,请完成身份验证","verify_ways":[{"act_type":"22","mobile":"190******25","verify_way":"mobile_sms_verify"},{"channel_mobile":"10103","mobile":"190******25","sms_content":"YZ","verify_way":"mobile_up_sms_verify"}]}

先想办法模拟一个登录出来,做到check_qrconnect返回身份验证就行

  • account_sdk_source_info:可以用手机号的解码decode_phone完成。(后面发现这个参数似乎不是必须的)

模拟登录1-返回身份验证

模拟登录的代码如下,最后是发现只需要一个ttwid即可,其他的次数都可以固定写死。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
'''
Author: This_is_Y
Date: 2024-12-16 10:55:51
LastEditTime: 2024-12-25 10:47:34
FilePath: /抖音-评论/LoginByQR.py
Description:

'''


from datetime import datetime
import json
import time
import httpx
import qrcode
import base64
import cv2
import execjs
import logging
from os import environ



def check_qrconnect(token=""):
url = "https://sso.douyin.com/check_qrconnect/?service=https%3A%2F%2Fwww.douyin.com&token={}&need_logo=false&is_frontier=false&need_short_url=false&passport_jssdk_version=2.0.11&passport_jssdk_type=pro&aid=6383&language=zh&account_sdk_source=sso&passport_ztsdk=3.1.0-store.7&passport_verify=1.0.17&request_host=https%253A%252F%252Fwww.douyin.com&device_platform=web_app".format(token)
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
"Accept": "application/json, text/javascript",
"Content-Type": "application/x-www-form-urlencoded",
"Referer": "https://www.douyin.com/",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-CN,zh;q=0.9",
"Cookie": "ttwid=1%7CbYpQ2YutHJ4r7H7hO-h4VidUWMkreeI6lw6RL0sZMvo%7C1735005886%7C04869e4698c774bc8572f59e7f0dfe1b55d0abf63858993c2d609b8acdb3193d"
}
timeout = httpx.Timeout(60.0) # 设置超时时间为60秒
client = httpx.Client(http2=True)
resp = client.get(url, headers=headers, timeout=timeout)
json_resp = json.loads(resp.text)

if "message" in json_resp.keys() and json_resp["message"] == "success":
if "data" in json_resp.keys() and "status" in json_resp["data"].keys():
status = json_resp["data"]["status"]
if status == "1":
print("等待扫码")
return token
elif status == "2":
print("已扫码,待确认")
return token
elif status == "5":
print("重新生成二维码")
print("刷新二维码成功")
# 解析返回
new_token = json_resp["data"]["token"]
qrcode = json_resp["data"]["qrcode"]
# print(json.dumps(json_resp, ensure_ascii=False, indent=4))
print(new_token)
print(qrcode)
show_qrcode(qrcode)
return new_token

elif "account_flow" in json_resp.keys() and json_resp["account_flow"] == "verify":
print(json_resp['description'])
return "success"
else:
print("未知错误", json_resp)
return "error"



def show_qrcode(qrcode_date):
# 解析并输出返回的qrcode 采用一个比较蠢的方式,先保存为图片,再读取图片识别二维码,再把内容重新生成二维码
img_data = base64.b64decode(qrcode_date.encode()) # 解码时只要内容部分

# 保存二维码图片
qrcode_file = "./QRcode/{}.png".format("qrcode-"+datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d-%H-%M-%S'))
with open(qrcode_file, 'wb') as f:
f.write(img_data)
data = identify_qrcode(qrcode_file)
print(f"二维码内容: {data}")
# 终端输出二维码
qr = qrcode.QRCode()
qr.add_data(data)
#invert=True白底黑块,有些app不识别黑底白块.
qr.print_ascii()

def identify_qrcode(filename):
# 识别二维码图片
qrcode_image = cv2.imread(filename)
qrCodeDetector = cv2.QRCodeDetector()
data, bbox, straight_qrcode = qrCodeDetector.detectAndDecode(qrcode_image)
return data



def login_by_qrcode():
# token = get_qrcode()
token = "304437d48d7e219a8edb6669261e3b7f_hl"
while 1:
token = check_qrconnect(token)
if token == "success":
print("登录成功")
break
elif token == "error":
print("登录失败")
break
else:
print("刷新请求中... ",token)
pass

time.sleep(6)


if __name__ == "__main__":
login_by_qrcode()

image-20241225101127256

模拟登录2-获取session-id

接下来写模拟登录的另外一部分,扫完码后,弹出提示需要再次验证,这里的验证有两种类型,接收验证码和发送验证码,这里分成两部分来写。这里先把扫完码,点击确认后的响应贴出来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
{
"account_flow": "verify",
"biz_params": {
"passport_mfa_retry_tag": "1"
},
"common_params": {
"new_verify_flow": ""
},
"description": "为保障你的账号安全,请前往抖音APP完成验证后再进行登录",
"encrypt_uid": "83Bk+A5Qd2rJFIFvYm7mou8OPCpzk6g4X+X7NGOWrxd9hZbAUvUShmy/iV+Hq9ZFHo6dbe7LTIozuukB",
"error_code": 2046,
"event_params": {
"log_id": "20241225131659655297D552C47928073F",
"verify_reason": "ato",
"verify_scene": "qr_connect"
},
"extra_params": {
"log_id": "20241225131659655297D552C47928073F"
},
"pack_verify_way": true,
"schema": "sslocal://webview/?hide_nav_bar=1\u0026should_full_screen=1\u0026disable_bounce=1\u0026status_font_mode=1\u0026block_back_press=1",
"url": "https://auth.zijieapi.com/ucenter_web/app/second_verification_web/dist/index.umd.production.js",
"user_info": {
"avatar_url": "https://p3.douyinpic.com/aweme/1080x1080/aweme-avatar/tos-cn-i-0813c001_okDwnAIp4ADDgTAMEzAAClszaNFg9M4E9AsffA.jpeg?from=4010531038",
"nickname": "testadmin",
"mobile_info": null
},
"verify_scene_desc": "为保证帐号安全,请完成身份验证",
"verify_ways": [
{
"act_type": "22",
"mobile": "190******25",
"verify_way": "mobile_sms_verify"
},
{
"channel_mobile": "10691859839103",
"mobile": "190******25",
"sms_content": "YZ",
"verify_way": "mobile_up_sms_verify"
}
]
}

接收验证码

在电机接收验证码后,会发送一条验证码到登录账号绑定的手机号上,请求url为:

https://www.douyin.com/passport/web/send_code/?new_authn_sdk_version=1.0.31-web&device_platform=web_app&msToken=bpfaHQWJG0ZAEl0zKVjBvFtt-3yhyb-0-XpAWOh48GNBWb2fdpZTGS6ks2b71lUZSnCiFADUXvSUCdJrZD_9kVn8C_I0A3gi3LWYzuuU44ikJ_PEflxgBWlfMrTcm2OBr1sEiS0uriqu0K1kiHyVe1qNyVdVjLvSfFUfqDdRI3Dmm2IJ8M_sGA%3D%3D&a_bogus=dJ45gwSLOZ8nCdMGYcDB9fHle12%2FNT8yYTi2bwnT9aaNY1MOKmPOwo4AGqTc5iQvkSpskCe7rDcfOfDYFGWAgqrkwmZku20SNz5In06o2HrgbTi2Xq6oemSELv4nUWGY%2FQ2JNpEXWtleILO3ZHxhWAF9yKec5KmMFHPJp1T9CEW6fAukkx3sOeDpxyTqUj%3D%3D

请求body为

mix_mode=1&type=3737&encrypt_uid=83Bk%2BA5Qd2rJFIFvYm7mou8OPCpzk6g4X%2BX7NGOWrxd9hZbAUvUShmy%2FiV%2BHq9ZFHo6dbe7LTIozuukB&verify_ticket=&new_verify_flow=&is6Digits=1&aid=6383&new_authn_sdk_version=1.0.31-web

这里面的encrypt_uid:83Bk+A5Qd2rJFIFvYm7mou8OPCpzk6g4X+X7NGOWrxd9hZbAUvUShmy/iV+Hq9ZFHo6dbe7LTIozuukB 由check_qrcode返回。(似乎还可以复用,不是一次性的)。不过60秒内只能发送一次

数据包在结果测试后,只需要如下参数即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
POST /passport/web/send_code/?new_authn_sdk_version=1.0.31-web&device_platform=web_app HTTP/2
Host: www.douyin.com
Cookie: ttwid=1%7CRIGZT9hrvcyU4SYFOYaeyDJ7s9pj76CNFcN3oo2ErAM%7C1735102344%7Cbc7331f26d791a89f680f84fa3ac9c4c228a20474eb0786b1a6831f949c5d887
Content-Length: 207
Pragma: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.61 Chrome/126.0.6478.61 Not/A)Brand/8 Safari/537.36
Accept: application/json, text/javascript
Content-Type: application/x-www-form-urlencoded
Origin: https://www.douyin.com
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://www.douyin.com/?recommend=1
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9i
Priority: u=1, i

mix_mode=1&type=3737&encrypt_uid=83Bk%2BA5Qd2rJFIFvYm7mou8OPCpzk6g4X%2BX7NGOWrxd9hZbAUvUShmy%2FiV%2BHq9ZFHo6dbe7LTIozuukB&verify_ticket=&new_verify_flow=&is6Digits=1&aid=6383&new_authn_sdk_version=1.0.31-web

image-20241225160427101

在发送验证码后,就是验证验证码是否正确,数据包缩减后如下,encrypt_uid同上,code是通过异或编码后的验证码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
POST /passport/web/validate_code/?new_authn_sdk_version=1.0.31-web&device_platform=web_app HTTP/2
Host: www.douyin.com
Cookie: ttwid=1%7CRIGZT9hrvcyU4SYFOYaeyDJ7s9pj76CNFcN3oo2ErAM%7C1735102344%7Cbc7331f26d791a89f680f84fa3ac9c4c228a20474eb0786b1a6831f949c5d887
Content-Length: 213
Pragma: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.61 Chrome/126.0.6478.61 Not/A)Brand/8 Safari/537.36
Accept: application/json, text/javascript
Content-Type: application/x-www-form-urlencoded
Origin: https://www.douyin.com
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://www.douyin.com/?recommend=1
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Priority: u=1, i

mix_mode=1&type=3737&encrypt_uid=83Bk%2BA5Qd2rJFIFvYm7mou8OPCpzk6g4X%2BX7NGOWrxd9hZbAUvUShmy%2FiV%2BHq9ZFHo6dbe7LTIozuukB&verify_ticket=&new_verify_flow=&code=323132303d3c&aid=6383&new_authn_sdk_version=1.0.31-web

image-20241225160446399

在返回success后,再次发送原来的check_qrconnect就可以得到一个redirect_url返回,这里面带了一个ticket,

1
2
3
4
5
6
7
8
9
10
{
"data": {
"extra": "",
"redirect_url": "https://www.douyin.com/login/?next=https%3A%2F%2Fwww.douyin.com\u0026ticket=2d17c549b536ec5a36bd2ffca114dc01_hl",
"status": "3"
},
"description": "",
"error_code": 0,
"message": "success"
}

之后跟着这个url跳转后会返回302,再次跳转到另外一个url:https://www.douyin.com/passport/sso/login/callback/?ticket=2d17c549b536ec5a36bd2ffca114dc01_hl&next=https%3A%2F%2Fwww.douyin.

截图大概如下,最后请求https://www.douyin.com/passport/sso/login/callback/?ticket=2d17c549b536ec5a36bd2ffca114dc01_hl&next=https%3A%2F%2Fwww.douyin.com后,就能返回需要的sessionid了。

image-20241225163628381

image-20241225163646230

image-20241225163738015

流程捋清楚后,就可以开始写代码了。

发送验证码

ttwid

Cookie中的ttwid:可以通过如下的请求获取,其中cookie中的__ac_nonce __ac_signature是必须的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
GET / HTTP/2
Host: www.douyin.com
Cookie: __ac_nonce=06767b34d008023feaa55; __ac_signature=_02B4Z6wo00f01YNA.agAAIDC9gB4CGEclRmDYPkAAAe4bb; __ac_referer=__ac_blank
Cache-Control: max-age=0
Sec-Ch-Ua: "Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-Dest: document
Referer: https://www.douyin.com/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Priority: u=0, i

image-20241222143835089

这里面的大致流程是先发出一个不带cookie的www.douyin.com请求,该请求的响应头中会返回一个`__ac_nonce`。 而响应体是一段js,大概如下图(后面就称为index.html)。在index.html中通过处理后,就会生成 __ac_signature。随后带上__ac_nonce __ac_signature一起再发一个www.douyin.com请求。这时候就有ttwid返回了。

image-20241222153938201

这部分的关键点在于 __ac_signature是如何生成的,格式化后的index.html中,可以看到。

1
__ac_signature = window.byted_acrawler.sign("", __ac_nonce);

image-20241222155502367

不过这样还是不太直观,我想要可以调试的环境,于是用 python -m http.server 8088开了一个临时web环境,把index.html运行起来,然后在Cookie里给他加一个__ac_nonce,模拟一下真实情况。之后打个断点,刷新一下,不出所料断点就轻松下来了。

image-20241222155918929

先确定一下这个__ac_signature是正常可用的。在js中生成一个__ac_signature,随后构造一个www.douyin.com请求,响应中正常返回了ttwid。ok

image-20241222160132276

image-20241222160119681

之后要做的就是把这一串js转为python。看了半天感觉有点复杂,我决定用execjs的方式实现这个__ac_signature的生成。这个东西在浏览器里随便运行,但是在python中,或者说在nodejs中,运行起来都比较困难,因为window变量的原因。我先把完整的html文件贴在下面

1
2
<html><head><meta charset="UTF-8" /></head><body></body> <script> var glb;(glb="undefined"==typeof window?global:window)._$jsvmprt=function(b,e,f){function a(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(b){return!1}}function d(b,e,f){return(d=a()?Reflect.construct:function(b,e,f){var a=[null];a.push.apply(a,e);var d=new(Function.bind.apply(b,a));return f&&c(d,f.prototype),d}).apply(null,arguments)}function c(b,e){return(c=Object.setPrototypeOf||function(b,e){return b.__proto__=e,b})(b,e)}function n(b){return function(b){if(Array.isArray(b)){for(var e=0,f=new Array(b.length);e<b.length;e++)f[e]=b[e];return f}}(b)||function(b){if(Symbol.iterator in Object(b)||"[object Arguments]"===Object.prototype.toString.call(b))return Array.from(b)}(b)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}for(var i=[],r=0,t=[],o=0,l=function(b,e){var f=b[e++],a=b[e],d=parseInt(""+f+a,16);if(d>>7==0)return[1,d];if(d>>6==2){var c=parseInt(""+b[++e]+b[++e],16);return d&=63,[2,c=(d<<=8)+c]}if(d>>6==3){var n=parseInt(""+b[++e]+b[++e],16),i=parseInt(""+b[++e]+b[++e],16);return d&=63,[3,i=(d<<=16)+(n<<=8)+i]}},u=function(b,e){var f=parseInt(""+b[e]+b[e+1],16);return f=f>127?-256+f:f},s=function(b,e){var f=parseInt(""+b[e]+b[e+1]+b[e+2]+b[e+3],16);return f=f>32767?-65536+f:f},p=function(b,e){var f=parseInt(""+b[e]+b[e+1]+b[e+2]+b[e+3]+b[e+4]+b[e+5]+b[e+6]+b[e+7],16);return f=f>2147483647?0+f:f},y=function(b,e){return parseInt(""+b[e]+b[e+1],16)},v=function(b,e){return parseInt(""+b[e]+b[e+1]+b[e+2]+b[e+3],16)},g=g||this||window,h=Object.keys||function(b){var e={},f=0;for(var a in b)e[f++]=a;return e.length=f,e},m=(b.length,0),I="",C=m;C<m+16;C++){var q=""+b[C++]+b[C];q=parseInt(q,16),I+=String.fromCharCode(q)}if("HNOJ@?RC"!=I)throw new Error("error magic number "+I);m+=16;parseInt(""+b[m]+b[m+1],16);m+=8,r=0;for(var w=0;w<4;w++){var S=m+2*w,R=""+b[S++]+b[S],x=parseInt(R,16);r+=(3&x)<<2*w}m+=16,m+=8;var z=parseInt(""+b[m]+b[m+1]+b[m+2]+b[m+3]+b[m+4]+b[m+5]+b[m+6]+b[m+7],16),O=z,E=m+=8,j=v(b,m+=z);j[1];m+=4,i={p:[],q:[]};for(var A=0;A<j;A++){for(var D=l(b,m),T=m+=2*D[0],$=i.p.length,P=0;P<D[1];P++){var U=l(b,T);i.p.push(U[1]),T+=2*U[0]}m=T,i.q.push([$,i.p.length])}var _={5:1,6:1,70:1,22:1,23:1,37:1,73:1},k={72:1},M={74:1},H={11:1,12:1,24:1,26:1,27:1,31:1},J={10:1},N={2:1,29:1,30:1,20:1},B=[],W=[];function F(b,e,f){for(var a=e;a<e+f;){var d=y(b,a);B[a]=d,a+=2;k[d]?(W[a]=u(b,a),a+=2):_[d]?(W[a]=s(b,a),a+=4):M[d]?(W[a]=p(b,a),a+=8):H[d]?(W[a]=y(b,a),a+=2):J[d]?(W[a]=v(b,a),a+=4):N[d]&&(W[a]=v(b,a),a+=4)}}return K(b,E,O/2,[],e,f);function G(b,e,f,a,c,l,m,I){null==l&&(l=this);var C,q,w,S=[],R=0;m&&(C=m);var x,z,O=e,E=O+2*f;if(!I)for(;O<E;){var j=parseInt(""+b[O]+b[O+1],16);O+=2;var A=3&(x=13*j%241);if(x>>=2,A<1){A=3&x;if(x>>=2,A>2)(A=x)>10?S[++R]=void 0:A>1?(C=S[R--],S[R]=S[R]>=C):A>-1&&(S[++R]=null);else if(A>1){if((A=x)>11)throw S[R--];if(A>7){for(C=S[R--],z=v(b,O),A="",P=i.q[z][0];P<i.q[z][1];P++)A+=String.fromCharCode(r^i.p[P]);O+=4,S[R--][A]=C}else A>5&&(S[R]=h(S[R]))}else if(A>0){(A=x)>8?(C=S[R--],S[R]=typeof C):A>6?S[R]=--S[R]:A>4?S[R-=1]=S[R][S[R+1]]:A>2&&(q=S[R--],(A=S[R]).x===G?A.y>=1?S[R]=K(b,A.c,A.l,[q],A.z,w,null,1):(S[R]=K(b,A.c,A.l,[q],A.z,w,null,0),A.y++):S[R]=A(q))}else{if((A=x)>14)z=s(b,O),(U=function e(){var f=arguments;return e.y>0?K(b,e.c,e.l,f,e.z,this,null,0):(e.y++,K(b,e.c,e.l,f,e.z,this,null,0))}).c=O+4,U.l=z-2,U.x=G,U.y=0,U.z=c,S[R]=U,O+=2*z-2;else if(A>12)q=S[R--],w=S[R--],(A=S[R--]).x===G?A.y>=1?S[++R]=K(b,A.c,A.l,q,A.z,w,null,1):(S[++R]=K(b,A.c,A.l,q,A.z,w,null,0),A.y++):S[++R]=A.apply(w,q);else if(A>5)C=S[R--],S[R]=S[R]!=C;else if(A>3)C=S[R--],S[R]=S[R]*C;else if(A>-1)return[1,S[R--]]}}else if(A<2){A=3&x;if(x>>=2,A<1){if((A=x)>9);else if(A>7)C=S[R--],S[R]=S[R]&C;else if(A>5)z=y(b,O),O+=2,S[R-=z]=0===z?new S[R]:d(S[R],n(S.slice(R+1,R+z+1)));else if(A>3){z=s(b,O);try{if(t[o][2]=1,1==(C=G(b,O+4,z-3,[],c,l,null,0))[0])return C}catch(m){if(t[o]&&t[o][1]&&1==(C=G(b,t[o][1][0],t[o][1][1],[],c,l,m,0))[0])return C}finally{if(t[o]&&t[o][0]&&1==(C=G(b,t[o][0][0],t[o][0][1],[],c,l,null,0))[0])return C;t[o]=0,o--}O+=2*z-2}}else if(A<2){if((A=x)>12)S[++R]=u(b,O),O+=2;else if(A>10)C=S[R--],S[R]=S[R]<<C;else if(A>8){for(z=v(b,O),A="",P=i.q[z][0];P<i.q[z][1];P++)A+=String.fromCharCode(r^i.p[P]);O+=4,S[R]=S[R][A]}else A>6&&(q=S[R--],C=delete S[R--][q])}else if(A<3){(A=x)<2?S[++R]=C:A<4?(C=S[R--],S[R]=S[R]<=C):A<11?(C=S[R-=2][S[R+1]]=S[R+2],R--):A<13&&(C=S[R],S[++R]=C)}else{if((A=x)>12)S[++R]=l;else if(A>5)C=S[R--],S[R]=S[R]!==C;else if(A>3)C=S[R--],S[R]=S[R]/C;else if(A>1){if((z=s(b,O))<0){I=1,F(b,e,2*f),O+=2*z-2;break}O+=2*z-2}else A>-1&&(S[R]=!S[R])}}else if(A<3){A=3&x;if(x>>=2,A>2)(A=x)>7?(C=S[R--],S[R]=S[R]|C):A>5?(z=y(b,O),O+=2,S[++R]=c["$"+z]):A>3&&(z=s(b,O),t[o][0]&&!t[o][2]?t[o][1]=[O+4,z-3]:t[o++]=[0,[O+4,z-3],0],O+=2*z-2);else if(A>1){if((A=x)<2){for(z=v(b,O),C="",P=i.q[z][0];P<i.q[z][1];P++)C+=String.fromCharCode(r^i.p[P]);S[++R]=C,O+=4}else if(A<4)if(S[R--])O+=4;else{if((z=s(b,O))<0){I=1,F(b,e,2*f),O+=2*z-2;break}O+=2*z-2}else A<6?(C=S[R--],S[R]=S[R]%C):A<8?(C=S[R--],S[R]=S[R]instanceof C):A<15&&(S[++R]=!1)}else if(A>0){(A=x)<1?S[++R]=g:A<3?(C=S[R--],S[R]=S[R]+C):A<5?(C=S[R--],S[R]=S[R]==C):A<14&&(C=S[R-1],q=S[R],S[++R]=C,S[++R]=q)}else{(A=x)<2?(C=S[R--],S[R]=S[R]>C):A<9?(z=v(b,O),O+=4,q=R+1,S[R-=z-1]=z?S.slice(R,q):[]):A<11?(z=y(b,O),O+=2,C=S[R--],c[z]=C):A<13?(C=S[R--],S[R]=S[R]>>C):A<15&&(S[++R]=s(b,O),O+=4)}}else{A=3&x;if(x>>=2,A>2)(A=x)>13?(S[++R]=p(b,O),O+=8):A>11?(C=S[R--],S[R]=S[R]>>>C):A>9?S[++R]=!0:A>7?(z=y(b,O),O+=2,S[R]=S[R][z]):A>0&&(C=S[R--],S[R]=S[R]<C);else if(A>1){(A=x)>10?(z=s(b,O),t[++o]=[[O+4,z-3],0,0],O+=2*z-2):A>8?(C=S[R--],S[R]=S[R]^C):A>6&&(C=S[R--])}else if(A>0){if((A=x)<3){var D=0,T=S[R].length,$=S[R];S[++R]=function(){var b=D<T;if(b){var e=$[D++];S[++R]=e}S[++R]=b}}else A<5?(z=y(b,O),O+=2,C=c[z],S[++R]=C):A<7?S[R]=++S[R]:A<9&&(C=S[R--],S[R]=S[R]in C)}else{if((A=x)>13)C=S[R],S[R]=S[R-1],S[R-1]=C;else if(A>4)C=S[R--],S[R]=S[R]===C;else if(A>2)C=S[R--],S[R]=S[R]-C;else if(A>0){for(z=v(b,O),A="",P=i.q[z][0];P<i.q[z][1];P++)A+=String.fromCharCode(r^i.p[P]);A=+A,O+=4,S[++R]=A}}}}if(I)for(;O<E;){j=B[O];O+=2;A=3&(x=13*j%241);if(x>>=2,A<1){var U;A=3&x;if(x>>=2,A<1){if((A=x)>14)z=W[O],(U=function e(){var f=arguments;return e.y>0?K(b,e.c,e.l,f,e.z,this,null,0):(e.y++,K(b,e.c,e.l,f,e.z,this,null,0))}).c=O+4,U.l=z-2,U.x=G,U.y=0,U.z=c,S[R]=U,O+=2*z-2;else if(A>12)q=S[R--],w=S[R--],(A=S[R--]).x===G?A.y>=1?S[++R]=K(b,A.c,A.l,q,A.z,w,null,1):(S[++R]=K(b,A.c,A.l,q,A.z,w,null,0),A.y++):S[++R]=A.apply(w,q);else if(A>5)C=S[R--],S[R]=S[R]!=C;else if(A>3)C=S[R--],S[R]=S[R]*C;else if(A>-1)return[1,S[R--]]}else if(A<2){(A=x)<4?(q=S[R--],(A=S[R]).x===G?A.y>=1?S[R]=K(b,A.c,A.l,[q],A.z,w,null,1):(S[R]=K(b,A.c,A.l,[q],A.z,w,null,0),A.y++):S[R]=A(q)):A<6?S[R-=1]=S[R][S[R+1]]:A<8?S[R]=--S[R]:A<10&&(C=S[R--],S[R]=typeof C)}else if(A<3){if((A=x)>11)throw S[R--];if(A>7){for(C=S[R--],z=W[O],A="",P=i.q[z][0];P<i.q[z][1];P++)A+=String.fromCharCode(r^i.p[P]);O+=4,S[R--][A]=C}else A>5&&(S[R]=h(S[R]))}else{(A=x)<1?S[++R]=null:A<3?(C=S[R--],S[R]=S[R]>=C):A<12&&(S[++R]=void 0)}}else if(A<2){A=3&x;if(x>>=2,A>2)(A=x)>12?S[++R]=l:A>5?(C=S[R--],S[R]=S[R]!==C):A>3?(C=S[R--],S[R]=S[R]/C):A>1?O+=2*(z=W[O])-2:A>-1&&(S[R]=!S[R]);else if(A>1){(A=x)<2?S[++R]=C:A<4?(C=S[R--],S[R]=S[R]<=C):A<11?(C=S[R-=2][S[R+1]]=S[R+2],R--):A<13&&(C=S[R],S[++R]=C)}else if(A>0){if((A=x)<8)q=S[R--],C=delete S[R--][q];else if(A<10){for(z=W[O],A="",P=i.q[z][0];P<i.q[z][1];P++)A+=String.fromCharCode(r^i.p[P]);O+=4,S[R]=S[R][A]}else A<12?(C=S[R--],S[R]=S[R]<<C):A<14&&(S[++R]=W[O],O+=2)}else{if((A=x)<5){z=W[O];try{if(t[o][2]=1,1==(C=G(b,O+4,z-3,[],c,l,null,0))[0])return C}catch(m){if(t[o]&&t[o][1]&&1==(C=G(b,t[o][1][0],t[o][1][1],[],c,l,m,0))[0])return C}finally{if(t[o]&&t[o][0]&&1==(C=G(b,t[o][0][0],t[o][0][1],[],c,l,null,0))[0])return C;t[o]=0,o--}O+=2*z-2}else A<7?(z=W[O],O+=2,S[R-=z]=0===z?new S[R]:d(S[R],n(S.slice(R+1,R+z+1)))):A<9&&(C=S[R--],S[R]=S[R]&C)}}else if(A<3){A=3&x;if(x>>=2,A<1)(A=x)<2?(C=S[R--],S[R]=S[R]>C):A<9?(z=W[O],O+=4,q=R+1,S[R-=z-1]=z?S.slice(R,q):[]):A<11?(z=W[O],O+=2,C=S[R--],c[z]=C):A<13?(C=S[R--],S[R]=S[R]>>C):A<15&&(S[++R]=W[O],O+=4);else if(A<2){(A=x)<1?S[++R]=g:A<3?(C=S[R--],S[R]=S[R]+C):A<5?(C=S[R--],S[R]=S[R]==C):A<14&&(C=S[R-1],q=S[R],S[++R]=C,S[++R]=q)}else if(A<3){if((A=x)<2){for(z=W[O],C="",P=i.q[z][0];P<i.q[z][1];P++)C+=String.fromCharCode(r^i.p[P]);S[++R]=C,O+=4}else A<4?S[R--]?O+=4:O+=2*(z=W[O])-2:A<6?(C=S[R--],S[R]=S[R]%C):A<8?(C=S[R--],S[R]=S[R]instanceof C):A<15&&(S[++R]=!1)}else{(A=x)>7?(C=S[R--],S[R]=S[R]|C):A>5?(z=W[O],O+=2,S[++R]=c["$"+z]):A>3&&(z=W[O],t[o][0]&&!t[o][2]?t[o][1]=[O+4,z-3]:t[o++]=[0,[O+4,z-3],0],O+=2*z-2)}}else{A=3&x;if(x>>=2,A>2)(A=x)>13?(S[++R]=W[O],O+=8):A>11?(C=S[R--],S[R]=S[R]>>>C):A>9?S[++R]=!0:A>7?(z=W[O],O+=2,S[R]=S[R][z]):A>0&&(C=S[R--],S[R]=S[R]<C);else if(A>1){(A=x)>10?(z=W[O],t[++o]=[[O+4,z-3],0,0],O+=2*z-2):A>8?(C=S[R--],S[R]=S[R]^C):A>6&&(C=S[R--])}else if(A>0){if((A=x)>7)C=S[R--],S[R]=S[R]in C;else if(A>5)S[R]=++S[R];else if(A>3)z=W[O],O+=2,C=c[z],S[++R]=C;else if(A>1){D=0,T=S[R].length,$=S[R];S[++R]=function(){var b=D<T;if(b){var e=$[D++];S[++R]=e}S[++R]=b}}}else{if((A=x)<2){for(z=W[O],A="",P=i.q[z][0];P<i.q[z][1];P++)A+=String.fromCharCode(r^i.p[P]);A=+A,O+=4,S[++R]=A}else A<4?(C=S[R--],S[R]=S[R]-C):A<6?(C=S[R--],S[R]=S[R]===C):A<15&&(C=S[R],S[R]=S[R-1],S[R-1]=C)}}}return[0,null]}function K(b,e,f,a,d,c,n,i){var r,t;null==c&&(c=this),d&&!d.d&&(d.d=0,d.$0=d,d[1]={});var o={},l=o.d=d?d.d+1:0;for(o["$"+l]=o,t=0;t<l;t++)o[r="$"+t]=d[r];for(t=0,l=o.length=a.length;t<l;t++)o[t]=a[t];return i&&!B[e]&&F(b,e,2*f),B[e]?G(b,e,f,0,o,c,null,1)[1]:G(b,e,f,0,o,c,null,0)[1]}},(glb="undefined"==typeof window?global:window)._$jsvmprt("484e4f4a403f5243000d2d1aea78184c36c3d671000000000000ab44020000250074211b000b02430200013e2217000e1c211b000b03430200024017000e18011b000b02041c16004c211b000b04430200033e2217000b1c1b000b041e00041700181b000b04260200050a000118010a0002101c16001e180022011700051c131f0018011800131e00061a001d000727041c00261102000025552002000825000d1b000b081e00090101001f0702000a25000e211b000b094302000240001f0802000b25005b131e000c02000d02000e1a02221e000f24131e00100a000110220117003c1c0200002500131800221e0011240a0000100200123e00131e001301220117001a1c211b000b0a43020002402217000b1c1b000b0a1e001404001f090200152500131b000b0b1a00221e0016240a000010001f0a020017250039211800430200023e22011700081c1800263e17000702000000211800430200183e170012180017000902001916000602001a001800001f0b02001b25005218010117000802001c1f010200001f0618001f0e180e480039170033180618011b000b0c221e001d241b000b0c221e001e240a00001018011e001f2a0a00011019281f06180e2e1f0e16ffcb1806001f0c0200202500df0200021f0621134318063e22011700121c13221e0011240a00001002002140220117001c1c1b000b051e00221e0011221e002324130a00011002002140220117000d1c211b000b084318063e22011700201c1b000b08221e0011240a000010221e0024240200250a00011048003a220117000d1c211b000b0d4318063e22011700151c1b000b0d221e0011240a00001002002640220117000d1c211b000b0e4318063e17000520001b020b07260a00001001170028211b000b0f4318063e22011700151c1b000b0f221e0011240a00001002002740170005200012001f0d0200282500a3211801430200294017000400180002002a281f061801221e002b24131e000c02002c0200001a020a0001101f0748001f12181218071e001f3a17006618071812191f081808221e002d2448000a00011002002e3e17001a1808221e002f24480118081e001f0a0002101f0816ffd81808221e00242418060a00011048003e1700191808221e002f2418061e001f18081e001f0a0002100018122d1f1216ff95001f0e02003025007146000306000a271f22020000000500600200001f06131e003117001c131e0031221e00322418000a0001101f061806170006180600131e003317001c131e0033221e00322418000a0001101f0618061700061806001b020b0e2618001b000b081e00340a0002101f0618060007001f0f02003525009c460003060006271f2205008f131e0031170015131e0031221e003624180018010a0002101c131e0033170015131e0033221e003624180018010a0002101c49016d48182a483c2a483c2a4903e82a1f061b000b081800020037281d00341b000b08180002002a28180128020038281b000b0b1b000b0b1a00221e0016240a0000101806281a01221e0039240a0000102802003a281d003407001f1002003b25004c460003060006271f1e05003f131e0031170013131e0031221e003c2418000a0001101c131e0033170013131e0033221e003c2418000a0001101c1b000b081800020037281d003407001f1102003d2500a31b000b101a001f061b000b05221e003e24180602003f131e00061a002202000025000c1b030b00201d0040001d00410a0003101c1b000b11221e00422402004318060a0002101c13221700081c131e00442217000b1c131e00441e00451700091800201d00401b020b08260a00001017003013221700221c131e0046131e00472948643922011700101c131e0048131e0049294864391700091800201d0040001f1302004a25002b211343020002402217001f1c1b000b051e00221e0011221e002324131e004b0a00011002004c3e001f1402004d2500611b020b07260a0000100117005202004e1b000b0d420122011700111c1b000b0d1e004e1b000b12410122011700091c02004f134222011700091c020050134222011700091c0200511342220117000f1c020052134202005313423a0012001f150200542501661b000b0d1e005517000520000200561b000b05421700431b000b05221e0056241b000b0d0a0001101f101810221e0024240200550a00011048003b22011700151c1810221e0024240200570a00011048003b170005200013221700081c131e00582217000b1c131e00581e00592217000e1c131e00581e00591e005a17002a460003060006271f9605001e131e00581e0059221e005a240a0000101b000b063e17000520000702005b02005c02005d02005e02005f0200600200610200620200630200640200650a000b1f060200660200670200680a00031f07180708031fc918c921041700181fc8180718c8191fca1318ca19170005200016ffe7180608031fc918c9210417001b1fc8180618c8191fca131e006918ca19170005200016ffe4131e006908031fc918c921041700341fc818c8221e006a24131e000c02006b0200001a020a0001102217000f1c131e006918c81902006c19170005200016ffcb12001f1602006d2500c71b020b08260a0000101700291b000b13221e006e2402000f0a0001101f06180602000025000c1b030b00201d006f001d00701b020b09260a00001017005b46000306002c271f1a181a1e00711b000b14020072193e2217000e1c131e00311e001f48003e1700091800201d006f050029131e0031221e0036240200730200000a0002101c131e0031221e003c240200730a0001101c071b020b07260a000010170024131e007401221700121c131e007522011700081c131e00761700091800201d006f001f170200772500b11b020b07260a000010011700a21b000b08221e0078240200790a0001101f0618061e007a221e0011240a000010221e007b24131e000c02007c02007d1a020200000a000210221e00242402007e0a00011048003a220117003b1c1b000b0d1e0011221e0011240a000010221e007b24131e000c02007c02007d1a020200000a000210221e00242402007e0a00011048003a22011700181c1b000b0d1e004e221e0011240a00001002007f400012001f18020080250075131e000c0200810200001a021f0613221700081c131e00822217000b1c131e00821e008317004c131e00821e00831f071807221e0024240200840a00011048003e22011700151c1807221e0024240200850a00011048003e22011700111c1806221e000f2418070a000110170005200012001f190200862500961b020b1a1e008717000b1b020b1a1e00870046000306000a271f1e020000000500731b000b08221e0078240200790a0001101f0c180c221e0088240200890a0001101f0d180d221e008a2402008b0a0001101f0e180d221e008c24180e02008d190a0001101f0f180d221e008c24180e02008e190a0001101f10180f02008f281810281f111b020b1a18111d008718110007001f1b0200902501270200001f061b020b1a1e009117000f1b020b1a1e00911f061600fb48051f0e0a00001f0f1b000b0d1e004e1f10181022011700071c0a00001f1148001f121812180e3a1700b7460003060006271f3f0500a318111812191f130a00001f1448001f16181618131e001f3a1700371813221e00922418160a00011017001f1814221e0093241813221e00922418160a0001101e00940a0001101c18162d1f1616ffc418131e0095020000281f1518131e0096170011181518131e009602000028281f15181518131e009702000028281f1518151814221e0098240200000a000110281f15180f221e00932418150a0001101c0718122d1f1216ff47180f221e0098240200990a0001101f061b020b1a18061d00911806221e009a2448004904000a000210001f1c02009b2504631b000b0d1e009c221e009d240a0000101f061b000b0d1e009e221e009d240a0000101f0748001f0848011f0948021f0a48031f0b48041f0c48051f0d180d1f0e02009f1f0f0200a01f100200a11f110200a21f120200a31f130200a41f140200a51f150200a61f161806221e0024240200a70a00011048003b22011700151c1806221e0024240200a80a00011048003b17000a180c1f0e1600f71806221e002424180f0a00011048003b17000a18081f0e1600dd1806221e00242418110a00011048003b17000a18091f0e1600c31806221e00242418120a00011048003b22011700151c1806221e0024240200a90a00011048003b22011700151c1806221e0024240200aa0a00011048003b17000a180a1f0e16007b1806221e00242418130a00011048003b22011700141c1806221e00242418140a00011048003b22011700141c1806221e00242418150a00011048003b22011700151c1806221e0024240200ab0a00011048003b22011700151c1806221e0024240200ac0a00011048003b17000a180b1f0e160007180d1f0e1807221e00242418100a00011048003b221700091c180e18084017000820001601521807221e00242418120a00011048003b22011700141c1807221e00242418110a00011048003b22011700151c1807221e0024240200ad0a00011048003b221700091c180e180a40221700091c180e18094017000820001600f91807221e00242418160a00011048003b22011700141c1807221e00242418140a00011048003b22011700141c1807221e00242418150a00011048003b22011700141c1807221e00242418130a00011048003b221700091c180e180c40221700091c180e180b40170008200016008b1807221e00242418100a00011048003a221700141c1807221e00242418120a00011048003a221700141c1807221e00242418160a00011048003a221700141c1807221e00242418130a00011048003a221700141c1807221e00242418140a00011048003a221700141c1807221e00242418150a00011048003a1f001800180e180d3e40170005200048001f1748011f1848021f1948041f1a48051f1b181b1f1c1806221e0024240200ae0a00011048003b17000a18191f1c1600861806221e0024240200af0a00011048003b22011700151c1806221e0024240200b00a00011048003b17000a18181f1c1600541806221e0024240200b10a00011048003b17000a18171f1c1600391806221e0024240200b20a00011048003b22011700151c1806221e0024240200b30a00011048003b17000a181a1f1c160007181b1f1c1b020b1c260a000010221e009d240a0000101f1d1b020b1b260a000010221e009d240a0000101f1e181c18173f221700091c181c18183f2217002d1c131e005822011700231c1b000b0d1e00b4221e0011240a000010221e0024240200b50a00011048003b1700052000181c18173f221700091c181c18183f221700151c181d221e0024240200580a00011048003b1700052000181c181a3e2217000a1c181e0200003f170005200012001f1d0200b62500da261f0646000306000f271f121b000b081e00b71f060500191b000b08221e00b8240200b90a0001104800191f06071806263e170004001b000b08221e0078240200ba0a0001101f070200bb1b000b15264927101b000b0c221e001e240a0000102a480a0a000210280200bb281b000b0b1a00221e0016240a000010281f0818000200bc180828281f00180718001d00bd1318080200002500311b030b011800041c460003060006271f0c05001c1b030b06221e00be241b030b070a0001101c131b030b080907000d1806221e00bf2418070a0001101c001f1e0200c02500be18001e001f1f0618064802331f07180117003018001806480129191f0818074804291f07180818074803293a22011700091c1808180739170005260018081f0748001f09180918063a17004a180018091b000b16221e00c12418001809194900ff2f18001809194808354900ff2f18001809194810354900ff2f18001809194818354900ff2f0a0004100d18092d1f0916ffb41800221e0098240200000a0001101f0a1801170013180a221e002f24480018070a00021000180a001f200200c225007f18001e001f1f0618064802341f07180648032f48004017000818072d1f07180117001a1b000b1718074801281a011f081808180718060d16000d1b000b1718071a011f0848001f09180918063a17002c1808180948023423191800221e00c32418090a000110180948032f48033333300d18092d1f0916ffd21808001f210200c425000a18001400c52f001f220200c6250030180248053518014802333118014803351802480433312818001801311805180348032f180431191802312831001f230200c725001818001e001f48043a17000a180048041d001f1800001f240200c82500d618001e001f1f0618064801291f0718001807191f0948001f0a1b000b0c221e001d244806483418062b280a0001104800301f0d180d4800391700981b020b22180a1b020b1f28041f0a180a48023548032f1f0b48001f0c180c18073a17003d1800180c480128191f081800180c1b020b221800180c191b020b2326180a18081809180c180b18010a00061028040d271f09180c2d1f0c16ffc118004800191f08180018071b020b2218001807191b020b2326180a180818091807180b18010a00061028040d271f09180d2e1f0d16ff661800001f250200c92500d818001e001f1f0618064801291f0718004800191f081b000b0c221e001d244806483418062b280a0001101f0d1b020b22180d1b020b1f2a041f0a180a480040170093180a48023548032f1f0b18071f0c180c48003917003d1800180c480129191f091800180c1b020b221800180c191b020b2326180a18081809180c180b18010a00061029040d271f08180c2e1f0c16ffc118001807191f09180048001b020b2218004800191b020b2326180a180818094800180b18010a00061029040d271f081b020b22180a1b020b1f29041f0a16ff6b1800001f260200ca2501ac131e000c0200cb0200001a02221e000f2418000a0001101700061800000a00001f0618001e001f1f0748001f0848001f09180818073a1701641800221e00c32418080a0001101f0a180a4900803a170018180618091800221e002d2418080a0001100d16012a180a4908003a17002a180618091b000b16221e00c1244900c0180a48063430490080180a483f2f300a0002100d1600fa180a4a0000d8003a220117000c1c180a4a0000dfff39170036180618091b000b16221e00c1244900e0180a480c3430490080180a480634483f2f30490080180a483f2f300a0003100d1600ae180848012818073a1700991800221e00c32418084801280a0001101f0b180a4a0000dc003a2217000c1c4a0000dc00180b3c2217000c1c180b4a0000dfff3c170062180a4903ff2f480a33180b4903ff2f304a00010000281f0c180618091b000b16221e00c1244900f0180c481234483f2f30490080180c480c34483f2f30490080180c480634483f2f30490080180c483f2f300a0004100d18082d1f0816000d1b000b180200cc1a014718082d1f0818092d1f0916fe9a1806221e0098240200000a000110001f270200cd25024e1b000b1718011a011f0648001f0748001f0818001e001f1f09180718013a221700091c180818093a1702051800221e00c3241808222d1f080a0001101f0a180a4804341f0c180c480040170061180c480140170059180c480240170051180c480340170049180c480440170041180c480540170039180c480640170031180c480740170029180c480c4017002b180c480d40170023180c480e40170055180c480f401700a216016816017d18061807180a0d160173180818093a17002818061807180a481f2f4806331800221e00c3241808222d1f080a000110483f2f300d16000d1b000b180200ce1a0147160139180848012818093a17004018061807180a480f2f480c331800221e00c3241808222d1f080a000110483f2f480633301800221e00c3241808222d1f080a000110483f2f300d16000d1b000b180200ce1a01471600e4180848022818093a1700b4180a48072f4812331800221e00c3241808222d1f080a000110483f2f480c33301800221e00c3241808222d1f080a000110483f2f480633301800221e00c3241808222d1f080a000110483f2f304a00010000291f0b4800180b3c2217000c1c180b4a000fffff3c17002f18061807222d1f07180b480a344903ff2f4a0000d800300d18061807180b4903ff2f4a0000dc00300d16001b1b000b180200cf180b221e00112448100a000110281a014716000d1b000b180200ce1a014716001b1b000b180200d0180a221e00112448100a000110281a014718072d1f0716fdef180718013a17000a180618071d001f1b000b161e00c11b000b16180610001f280200d12502aa0a00001f061b000b174a000080001a011f0748001f0848001f0918001e001f1f0a180818013a221700091c1809180a3a1702431800221e00c3241809222d1f090a0001101f0b180b4804341f0e180e480040170061180e480140170059180e480240170051180e480340170049180e480440170041180e480540170039180e480640170031180e480740170029180e480c4017002b180e480d40170023180e480e40170055180e480f401700a216016816017d18071808180b0d1601731809180a3a17002818071808180b481f2f4806331800221e00c3241809222d1f090a000110483f2f300d16000d1b000b180200ce1a01471601391809480128180a3a17004018071808180b480f2f480c331800221e00c3241809222d1f090a000110483f2f480633301800221e00c3241809222d1f090a000110483f2f300d16000d1b000b180200ce1a01471600e41809480228180a3a1700b4180b48072f4812331800221e00c3241809222d1f090a000110483f2f480c33301800221e00c3241809222d1f090a000110483f2f480633301800221e00c3241809222d1f090a000110483f2f304a00010000291f0c4800180c3c2217000c1c180c4a000fffff3c17002f18071808222d1f08180c480a344903ff2f4a0000d800300d18071808180c4903ff2f4a0000dc00300d16001b1b000b180200cf180c221e00112448100a000110281a014716000d1b000b180200ce1a014716001b1b000b180200d0180b221e00112448100a000110281a01471808497fff4801293b17003518084801281f0d1807180d1d001f180618061e001f1b000b161e00c11b000b161807100d1801180d291f0148004801291f0818082d1f0816fdb11808480039170020180718081d001f180618061e001f1b000b161e00c11b000b161807100d1806221e0098240200000a000110001f290200d22500b418011b000b063e22011700081c1801263e22011700091c180148003a17000a18001e001f1f01180148003e17000702000000131e000c0200cb0200001a02221e000f2418000a000110220117001c1c131e000c0200d30200001a02221e000f2418000a00011001170021180118001e001f3e1700061800001800221e00d424480018010a0002100018014a0000ffff3a1700131b020b2826180018010a0002101600101b020b2926180018010a000210001f2a0200d525006b18001b000b063e22011700081c1800263e220117000c1c18001e001f48003e1700061800001b020b271800041f001b020b271801041f011b020b20261b020b25261b020b21261800200a0002101b020b241b020b21261801120a000210040a000210120a000210001f2b0200d625006718001b000b063e22011700081c1800263e220117000c1c18001e001f48003e1700061800001b020b271801041f011b020b2a1b020b20261b020b26261b020b21261800120a0002101b020b241b020b21261801120a000210040a000210200a00021004001f2c0200d725019d0200d81f0602002a1f0718021700080200001f07180117000718011f060200001f0848001f0a18001e001f180a4803283b1700b31800221e00c324180a222d1f0a0a0001104900ff2f4810331800221e00c324180a222d1f0a0a0001104900ff2f480833301800221e00c324180a222d1f0a0a0001104900ff2f301f0918081806221e002d2418094a00fc00002f4812340a000110281f0818081806221e002d2418094a0003f0002f480c340a000110281f0818081806221e002d241809490fc02f4806340a000110281f0818081806221e002d241809483f2f0a000110281f0816ff4518001e001f180a294800391700a81800221e00c324180a222d1f0a0a0001104900ff2f48103318001e001f180a3917001a1800221e00c324180a0a0001104900ff2f4808331600054800301f0918081806221e002d2418094a00fc00002f4812340a000110281f0818081806221e002d2418094a0003f0002f480c340a000110281f08180818001e001f180a3917001a1806221e002d241809490fc02f4806340a0001101600051807281f0818081807281f081808001f2d0200d92500120200da221e00242418000a000110001f2e0200db2501100200001f0648001f07180718001e001f4803293a1700f61b020b2e1800221e002d2418074800280a000110041f081b020b2e1800221e002d2418074801280a000110041f091b020b2e1800221e002d2418074802280a000110041f0a1b020b2e1800221e002d2418074803280a000110041f0b18061b000b16221e00c12418084802331809480435300a000110281f061800221e002d2418074802280a00011002002a3f17002718061b000b16221e00c12418094804334900f02f180a480235480f2f300a000110281f061800221e002d2418074803280a00011002002a3f17002118061b000b16221e00c124180a4806334900c02f180b300a000110281f0618074804281f0716ff021806001f2f0200dc25004a1800483f2f1f001b000b16221e00c12418001800481a3a1700084841160025180048343a17000848471600181800483e3a17000b48004804291600084800481129280a000110001f310200dd2500331b020b311f06180618004818340418061800481234042818061800480c340428180618004806340428180618000428001f320200de2500981b020b121e00df0200e0281f061b020b1e26180602000025007818001e001f48083a17000400460003060006271f7405005f1b020b2c261b020b2f1800221e009a2448080a000110041800221e009a24480048080a0002100a0002101f0c180c0200e13e1700131b020b38262018000a0002101c160019180c0200e23e1700101b020b38261218000a0002101c07000a0002101c001f370200e325004e1b020b1218001d00e4460003060006271f1e050038131e0031170016131e0031221e0036240200e518010a0002101c131e0033170016131e0033221e0036240200e518010a0002101c07001f380200e62500a90200001f06460003060006271f2305003f131e0031170015131e0031221e0032240200e50a0001101f0618060122011700081c131e0033170015131e0033221e0032240200e50a0001101f06071806170055460003060006271f430500491b020b2c261b020b2f1806221e009a2448080a000110041806221e009a24480048080a0002100a0002101f2318230200e13e170008200016000e18230200e23e17000512000712001f390200e7250103121f061b020b121e00e4203e170009201f061600201b020b121e00e4123e170009121f0616000e1b020b39260a0000101f06131e00061a0022121d00e822121d00e922121d00822218061d00ea22121d00eb22121d004022121d00ec22121d00ed22121d005522121d006f22121d00ee220200ef25000520001f4018401d000f1f0718071b020b0d260a0000101d00eb18071e00eb011700671b020b131807041c1b020b171807041c18071b020b14260a0000101d00ec18071b020b15260a0000101d00ed18071b020b16260a0000101d005518071b020b18260a0000101d00ee18071b020b19260a0000101d008218071b020b1d260a0000101d00e91807001f3a0200f025005c1b000b05221e00f12418000a0001101f0648001f0718061e001f4801291f08180848003b1700321800180618081919170008480116000548001f09180918061e001f180829480129331807301f0718082e1f0816ffcc1807001f3b0200f225003848001f06180618011e001f3a17002618004a0001003f2a1801221e00c32418060a000110284800351f0018062d1f0616ffd51800001f3c0200f325003848001f06180618011e001f3a17002618001801221e00c32418060a000110314a0001003f2a4800351f0018062d1f0616ffd51800001f3d0200f42500a348001f06180618011e001f3a1700911801221e00c32418060a0001101f0718074a0000d8003b2217000c1c18074a0000dbff3c2217000c1c180618011e001f3a1700451801221e00c32418064801280a0001101f0818084a0000fc002f4a0000dc003d17002218074903ff2f480a3318084903ff2f284a00010000281f0718064801281f0618004a0001003f2a1807284800351f0018062d1f0616ff6a1800001f3e0200f5250077180022011700071c0200001f061806221e007b24131e000c0200f60200001a020200000a0002101f061806221e0024240200e00a0001104800480129401700211806221e00d42448001806221e0024240200e00a0001100a00021016000518061f061806170008180616000602008f1f061806001f3f0200f72500b1180022011700071c0200001f061806221e006a24131e000c0200f80200001a020a0001101f0718071700161807480019221e00d42448010a0001101600060200001f0618061700141806221e002b240200f90a000110160004261f08131e00061a001f09180817004548001f0a180a18081e001f3a17003618091808180a19221e002b2402002a0a0001104800191808180a19221e002b2402002a0a0001104801190d180a2d1f0a16ffc51809001f400200fa25009118000122011700171c1b000b19221e00fb2418000a0001100200fc3e17000a131e00061a00001b000b05221e00f12418000a000110221e00fd240a0000101f06131e00061a001f0748001f10181018061e001f3a170037180117001a180718061810191800180618101919020000280d1600131807180618101918001806181019190d18102d1f1016ffc41807001f410200fe2500781b000b17221e00ff2418000a0001101700131800221e0100241b020b420a0001100018001b000b05411700491b000b05221e00f12418000a000110221e00fd240a0000101f0c180c221e010124020000250017180018011b020b421b030b00180119040d180000131e00061a000a000210001800001f4202010225007d18000122011700171c1b000b19221e00fb2418000a0001100200fc3e170007020000001b000b05221e00f12418000a000110221e00fd240a0000101f060200001f0748001f10181018061e001f3a170029180718061810190a000102002a281800180618101919280200f928281f0718102d1f1016ffd21807001f430201032500cb1b000b08221e0078240200790a0001101f07180748301d0104180748101d01051807221e0088240201060a0001101f0818080201071d01081808221e01092402010a4802480c0a0003101c180848021d010b180848011d010c180802010d1d010e1808221e010f24480848084808480048020a0005101c1808221e0110240a0000101c1807221e007a240a0000101f0648001f09180948203a17002c18004a0001003f2a1806221e00c324180018061e001f2c0a000110284800351f0018092d1f0916ffd21800001f4402011125002046000306000c271f0c48004801290005000d1b020b44140112040007001f45020113250011110201131d00951118001d0114001f4602011525001a460003060008271f0c200005000b131e003101010007001f4702011625001a460003060008271f0c200005000b131e003301010007001f4802011725001a460003060008271f0c200005000b131e007401010007001f490201182500301b020b0b1b020b49260a000010041b020b0b1b020b48260a00001004281b020b0b1b020b47260a0000100428001f4a020119250023131e011a1f0618061e01040200bb2818061e0105280200bb2818061e011b28001f4b02011c250019131e011a1f0618061e011d0200bb2818061e011e28001f4c02011f2500711b000b1a0200002500640201201b000b0d421700511b000b0d221e0120240a000010221e0121240200002500311b040b001800020122190200bb28180002012319280200bb28180002012419280200bb2818000201251928041c000a0001101c16000a1800020000041c001a01001f4d02012625007d0201271f0648001f07211b000b0d180619430200024017000f1b000b0d1806191f0716001c211b000b0d180619430200024017000c1b000b0d1806191f07460003060009271f50121f080500181b000b08221e0128240201290a0001101c201f080702012a13421f0918070200bb281808280200bb28180928001f4e02012b2500671b000b0b1a001f061806221e012c2448010a0001101c1806221e012d2448050a0001101c48001806221e012e240a000010291f071806221e012d24480b0a0001101c48001806221e012e240a000010291f081b000b0c221e012f24180718080a000210001f4f0201302501dd0201310201320201330a00031f06131e00061a001f07131e00061a001f081b000b081e00b70117000702001a001806031f1b181b21041700711f1a1b000b08221e0078240201340a0001101f1c181c0201351d0136181c1e01370201381d0139181c1e0137181a1d013a1b000b081e00b7221e00bf24181c0a0001101c1807181a181c1e013b0d1808181a181c1e013c0d1b000b081e00b7221e00be24181c0a0001101c16ff8e02013d02013e02013f02014002014102014202014302014402014502014602014702014802014902014a02014b02014c02014d02014e02014f0201500201510201520201530201540201550201560201570201580201590a001d1f0948001f0b271f0a271f0c48001f1a181a18091e001f3a1700b31806031f1c181c210417009f1f1b1b000b08221e0078240201340a0001101f1d181d0201351d0136181d1e01370201381d0139181d1e01371809181a1902015a28181b281d013a1b000b081e00b7221e00bf24181d0a0001101c181d1e013b1807181b1940220117000f1c181d1e013c1808181b19401f1e1b000b081e00b7221e00be24181d0a0001101c181e170018181a481e3a17000d4801181a33180a301f0a16000616ff60181a2d1f1a16ff48180a221e00112448100a000110001f5002015b25002146000306000c271f0c180c1e01140005000e1b000b1b02015c1a011c07001f5102015d2500141b000b1c221e0011240a0000101e001f001f5202015e2501e81b020b07260a000010220117000d1c1b020b09260a00001022011700231c1b000b0d1e009c221e009d240a000010221e00242402015f0a00011048003917000702000000131e016022011700081c131e016122011700081c131e01621f061b000b1a02000025017d46000306000d271f6a1800020000041c0501691b030b0617015a1b030b06131e00061a0022131e00061a00220201631d01640a00011d01651a011f06020000250004001f07131e000c0201660200001a021f08131e000c02016702007d1a021f091806221e0168240200000a0001101c1b000b1d2602000025000d1b040b00020000041c004901f40a0002101c1806221e0169240a0000101f0a180a1b000b1a41170038180a221e0121240200002500131b040b06221e016a2418000a000110000a000110221e012124020000250004000a0001101c1600301806221e01692402000025001c1b040b06221e016a2418001b040b071b040b070a0003101c0018070a0002101c18060200002500601800221700091c18001e016b2217000c1c18001e016b1e016b1700431b040b08221e016c2418001e016b1e016b0a0001101f0618061700271806480019221e006a241b040b090a0001101f07180717000e1b040b001806480019041c001d016d16000a1800020000041c07001a01001f5302016e25005d02016f221e007b24131e000c02017002007d1a0202000025003e1b000b0c221e001e240a00001048102a4800301f0618000201713d170008180616000b180648032f4808301f071807221e00112448100a000110000a000210001f5402017225005518001e001f48223e1700481b020b3c2648001800221e002f24480048200a0002100a0002101f061806221e0011240a000010221e002f24480048020a0002101800221e002f24482048220a0002103e0012001f5502017325005d1b020b0f020174041f0618062217000b1c1b020b551806041700061806001b020b54260a0000101f0618061b020b3c26480018060a00021028221e002f24480048220a0002101f061b020b102602017418060a0002101c1806001f56020175250033180001170007020000001b020b0c4804041f0618061b020b2d261b020b2b26180018060a0002100201760a00021028001f5702017725015d180117003a48001f0b48001f0c180c18001e001f3a1700271800180c191e01781700141800180c191801180b222d1f0b191d0179180c2d1f0c16ffd40200001f061800221e017a2402000025001b1b03220b061b020b0b18001e01790402017b28281d017c000a0001101c18061b020b0a260a000010281f061b020b54260a0000101f071b000b0c221e001d241807221e00c32448030a00011048082b0a0001101807221e00c32448030a00011048082c281f081807221e002f24480448041808280a0002101f091b020b2d1b020b2b26180618090a000210180728041f061b020b12221e017d02017e1b000b1e180604280200f928281d017d271f0a1b020b1e26180a02000025004d180002017f1948003d2217000a1c1800020180191700351b020b121b020b57180002018019041d01811b020b121800020180191d01821b020b10260201831800020180190a0002101c000a0002101c001f5802018425049a1b000b0d221700051c13221700081c1b000b080117000400131e00061a00220201851d01862248041d01872218001e01851d0179131e00061a00220201881d01862248031d0187221b020b0a1d0189131e00061a002202018a1d01862248031d0187221b020b4a1d0189131e00061a00220200791d01862248031d0187221b020b451d0189131e00061a002202018b1d01862248031d0187221b020b0a1d0189131e00061a002202009e1d01862248001d0187131e00061a002202018c1d01862248001d0187131e00061a002202018d1d01862248001d0187131e00061a002202018e1d01862248001d0187131e00061a00220200571d01862248001d0187131e00061a002202018f1d01862248031d0187221b020b4b1d0189131e00061a00220201901d01862248031d0187221b020b4c1d0189131e00061a00220201911d01862248011d0187131e00061a00220201921d01862248011d0187131e00061a00220201931d01862248011d0187131e00061a00220201941d01862248001d0187131e00061a00220201951d01862248031d0187221b020b4d1d01892248011d0178131e00061a00220201961d01862248031d0187221b020b4e1d0189131e00061a00220201971d01862248031d0187221b020b4f1d0189131e00061a00220201981d01862248031d0187221b020b0a1d0189131e00061a00220201991d01862248031d0187221b020b1b1d0189131e00061a002202019a1d01862248031d0187221b020b501d0189131e00061a002202019b1d01862248031d0187221b020b1c1d0189131e00061a002202019c1d01862248031d0187221b020b0a1d0189131e00061a002202009c1d01862248001d0187131e00061a002202019d1d01862248031d0187221b020b0f1d0189220201831d019e131e00061a002202019f1d01862248031d0187221b020b511d0189131e00061a00220201a01d01862248031d0187221b020b521d0189131e00061a00220201a11d01862248031d0187221b020b531d01892248011d0178131e00061a00220200821d01862248011d0187131e00061a00220201a21d01862248041d0187221b020b061e01a31d0179131e00061a00220201a41d01862248031d0187221b020b561d0189131e00061a00220201a51d01862248031d0187221b020b0a1d0189131e00061a00220201a61d01862248041d01870a00221f060a00001f07180608031f11181121041700db1f1018061810191e01871f12181248004017001e1812480140170033181248024017004018124803401700501600a918061810191b020b0b1b000b0d18061810191e018619041d017916008c18061810191318061810191e0186191d017916007718061810191b000b0818061810191e0186191d017916005f18061810191e01781700321b000b1a1700281807221e00932418061810191e0189221e00232418061810191e019e0a0001100a0001101c160025180618101918061810191e0189221e0023242618061810191e019e0a0002101d017916ff241b000b1a1700361b000b1a221e01a72418070a000110221e0121240200002500141b020b58261b030b0618000a0002101c000a0001101c16000b1b020b581806041c001f590201a82500441b000b082217000b1c1b000b081e01a901170004001b020b5b08031f0d180d210417001f1f0c1b000b08221e01a924180c1b020b5b180c190a0002101c16ffe0001f5d0201aa25008418001e001f4900c8391700131800221e01ab24480048640a0002101c18001e001f48003917004e180018001e001f480129191f0c18011e01ac180c1e01ac2948003c220117002a1c0201ad1801422217000f1c18011e0171180c1e01713d2217000f1c18011e01ad180c1e01ad3d170004001800221e00932418010a0001101c001f610201ae25006048001f0618001e01af22011700091c18001e01b022011700091c18001e01b122011700091c18001e01b217000748011f061b020b61261b020b60131e00061a002218061d0171221b000b0b221e01b3240a0000101d01ac0a0002101c001f620201b425006d18001f0618001e00941f0718001e01b52217000a1c18070201b63e17001318001e01b74800191f061b02201d01b8131e00061a002218061e01b91d01712218061e01ba1d01ad221b000b0b221e01b3240a0000101d01ac1f081b020b61261b020b5e18080a0002101c001f630201bb25006d18001f0618001e00941f0718001e01b52217000a1c18070201bc3e17001318001e01b74800191f061b02201d01b8131e00061a002218061e01b91d01712218061e01ba1d01ad221b000b0b221e01b3240a0000101d01ac1f081b020b61261b020b5f18080a0002101c001f640201bd2500191800221e0101241b020b650a00011018001e001f2b001f670201be25006818001e001f48013c1700064800001b020b671800041f061800221e01002402000025000b18001b030b0629000a0001101f071b000b0c221e01bf241807221e0100241b020b660a000110221e0101241b020b650a00011018001e001f4801292b0a000110001f680201c02500d548001f0648001f0718001e001f1801391700ba0a00001f0848001f09180918001e001f4801293a17008418001809480128191f0a18001809191f0b180a1e01ac180b1e01ac291f0c180c17005918021700171808221e0093244801180c2b0a0001101c1600401808221e0093241b000b0c221e01bf241b020b66180a1e0171180b1e017129041b020b66180a1e01ad180b1e01ad2904280a000110180c2b0a0001101c18092d1f0916ff741b020b671808041f061b020b681808041f07180748003d1700081401c11f07180618070a0002001f690201c2250119121f06460003060006271f2105002b1b000b082217000b1c1b000b081e01281700171b000b08221e0128240201290a0001101c201f06071b020b69261b020b5e48010a0002101f071b020b69261b020b604805200a0003101f0848011f09180601221700081c1b020b5c17000a18094840301f091b020b5e1e001f48003e17000d18094802301f09160015180748001948323917000a18094810301f091b020b5f1e001f48003e17000a18094804301f091b020b601e001f48003e17000d18094808301f0916001618084800191401c33917000a18094820301f091809221e00112448200a0001101f0a180a1e001f48013e17000e0201c4180a281f0a160016180a1e001f48023e17000b02001a180a281f0a180a001f6a0201c525002d0200001f06460003060006271f0e0500191b020b0e260201c61b000b081e00340a0002101f06071806001f6b0201c72500531b000b19221e00fb24131e00061a002218001d000e221b000b1f1b000b19221e00fb2418011e00b70a000110041d01c82218021d01860a0001101f061b020b2d261806020176200a0003101f071807001f6c0201c9250434211801430200023e2217000c1c21180043020001402217000a1c18001e01ca0117000d1b020b460201cb1a014748001f0648001f074a0000fff11f081b000b0b1a00221e0016240a0000104903e82b4800351f091b020b061e01cc012217003e1c1b020b3d261b020b3d2648001809020000280a0002101b000b0e1e0083221e002f241b000b0e1e01cd1e001f4802280a0001100a00021018082c1f071809180718082a31480035221e00112448020a0001101f0a180a1f0b180a1e001f48203917001b180a221e002f24180a1e001f4820290a0001101f0b16003c180a1e001f48203a1700310200001f7048001f7118714820180a1e001f293a170013187002001a281f7018712d1f7116ffe51870180b281f0b0201ce1f0c0201cf1f0d0201d01f0e180e180d28180c28180b281f061b000b1526180648020a0002101f061b020b3d2648001806020000280a0002101f0f1b020b3a260a0000101f1018100200e818020201d13e17000712160004200d0200001f11180117000a18011f1116011e1b020b5a1e01d2221e002324110201d318000a0003101c18001e00b72217001a1c1b000b19221e00fb2418001e00b70a0001100200fc4017006f48001fc318001e01d41700331b020b3e2648001b000b19221e00fb241b020b412618001e00b718001e01d40a0002100a0001100a0002101fc31600271b020b3e2648001b000b19221e00fb241b020b4218001e00b7040a0001100a0002101fc30201d518c3280200f9281f111b020b4018001e01ca041fc218001e01d617001a1b000b05221e01d72418c218001e01d60a00021016000518c21fc218111b020b4318c204281f1118110201d8281b020b3f18001e01ca04280200f9281f1118110201d9280201da281f111b020b5a1e01d2221e002324110201db18110a0003101c1b020b3b1810041f121b020b061e01cc012217000d1c1b020b45260a0000101f131b020b061e01cc012217001e1c1b020b121e018122011700111c1b020b571b020b0f02018304041f141b020b331806041b020b3318061401dc2b48003504281b020b33181318063104281b020b331b020b3d26180f1b020b061e01cc012217000b1c1b000b0d1e009c221e0011240a0000100a00021018082c4810331b020b3d26180f1811020000280a00021018082c3004281b020b3318124808331b020b061e01dd4804333018063104281b020b32180704281f151b020b334800041c181417000a18151814281f151b020b6a260a00001022011700071c0201de1f160200bb1b020b6d281b020b061e01df281f1718171816281f1718171b020b6e181528281f171b020b3e26480018170a000210221e00112448100a0001101f181818221e009a2418181e001f48022918181e001f0a0002101f1918171819281f170200001f1a1b020b6b260a0000101f1b181b17001f1b020b6c26181b180018110a0003101f1a18170201e028181a281f171817001f6f0201e1250072131e00061a001f06180108031f081808210417005a1f0718011807191f0918001809191f0a21180a430200023e22011700081c180a263e170006121f0a180a26402217001a1c21180a430200033e220117000c1c21180a430200013e170006201f0a18061809180a0d16ffa51806001f700201e225004b0201e30201e402009e0201e502019402018c0201e60201270201e70200b40201e80201e90201ea0201eb0201ec0201ed0201ee0a00111f061b020b70261b000b0d18060a000210001f710201ef2500450201f00200490200470201f10201f20201f30201930201f40201f50201f60201f70201610201f80201f90201fa0201fb0a00101f061b020b70261318060a000210001f720201fc2500270201fd0201fe0200090201ff0202000a00051f061b020b70261b000b0818060a000210001f730202012500551b000b08221e0078240200790a0001101f06261f07460003060006271f100500281806221e0088240200890a00011022011700121c1806221e0088240202020a0001101f0707180701170006261f071807001f740202032500671800221e008a240202040a00011022011700121c1800221e008a240202050a00011022011700121c1800221e008a240202060a0001101f0618061700271800221e008c2418061e02070a0001101f07180748003e17000748021f071807001600052600001f750202082501b61b020b1a1e020917000b1b020b1a1e0209001b020b74260a0000101f0618060117000a131e00061a0000131e00061a00221806221e020a240a00001022011700071c0a00001d020b221806221e020c240a0000101e020d1d020d221806221e008c2418061e020e0a0001101d020f221806221e008c2418061e02100a0001101d0211221806221e008c2418061e02120a0001101d0213221b020b751806041d0203221806221e008c2418061e02140a0001101d0215221806221e008c2418061e02160a0001101d0217221806221e008c2418061e02180a0001101d0219221806221e008c2418061e021a0a0001101d021b221806221e008c2418061e021c0a0001101d021d221806221e008c2418061e021e0a0001101d021f221806221e008c2418061e02200a0001101d0221221806221e008c2418061e02220a0001101d0223221806221e008c2418061e02240a0001101d0225221806221e008c2418061e02260a0001101d0227221806221e008c2418061e02280a0001101d0229221806221e008c2418061e022a0a0001101d022b221806221e008c2418061e022c0a0001101d00961f071b020b1a18071d02091807001f7602022d250065131e00061a00221b020b71260a0000101d022e221b020b72260a0000101d022f221b020b73260a0000101d0069221b020b76260a0000101d0089221b020b1b260a0000101d0230221b020b1c260a0000101d004e1f061b020b1a18061d02311806001f77020232250075131e00061a001f061b020b1a1e023117000f1b020b1a1e02311f0616000e1b020b77260a0000101f0618061b000b0b221e01b3240a0000101d02331b020b0c4804041f0718071b020b2d261b020b2b261b000b19221e00fb2418060a00011018070a0002100201760a000210281f081808001f7802023425003b48001f0618061b020b121e02351e001f3a1700251b020b121e0235180619221e000f2418000a000110170005200018062d1f0616ffd112001f790202362503ac131e02371e00221f0618061e006e1f0718061e02381f0818061e02391f0918061e023a1f0a18061e023b170007001600091806201d023b1806020000250076111e023c01170065111e023d221e009324131e00061a00220202381d023e221b041d023f0a0001101c131e000c02024002000e1a02221e000f2418000a00011017002a111801221e0011240a000010221e009d240a000010221e002b240202410a0001104800191d02421b030b08111b0410001d02381806020000250012111b041d02431b030b0a111b0410001d023a1806020000250040110a00001d023d111e023d221e009324131e00061a002202006e1d023e221b041d023f0a0001101c1118001d02441118011d02451b030b07111b0410001d006e02024602007002024702024802024902024a02024b0a00071f0b180602000025026f11201d023c1b020b79111e024504170255111e0245221e00242402024c0a00011048004801293917000c1b030b09111b0410001118001d024d111e024e1f06111e02461f07111e00701f08111e02471f09111e02481f0a111e02491f0b111e024a1f0c111e024b1f0d111e024f1f0e111e02501f0f131e00061a001f1048001f2a182a1b030b0b1e001f3a17002118101b030b0b182a19111e02511b030b0b182a19190d182a2d1f2a16ffd8131e00061a00221b020b82261b030b00111e02450a0002101d01ca1f11111e02440202523d17003c111e02420202533e220117000c1c111e02420202543e17001a1b020b80261811111e0242111e024d0a0003101c16000c1b030b09111b0410001b020b851b030b000417001c1b030b00221e02552418111b000b060201d10a0003101600151b020b6f2618111b000b060201d10a0003101f121b020b8326111e024518120a0002101f13111e023d221700131c111e023d48001902023e1902006e3f1700052600111e023d1f1448001fa418a418141e001f3a17003618a448003e170010181418a4191e023f480118130d11181418a41902023e191911181418a4191e023f101c18a42d1fa416ffc5111e024317000e111e023a11111e0243101c1102023d091b020b121e025617001e11221e0238241b020b061e02571b020b78260a0000100a0002101c1118061d024e1118071d02461118081d00701118091d024711180a1d024811180b1d024911180c1d024a11180d1d024b11180e1d024f11180f1d025048001f9018901b030b0b1e001f3a170021111e02511b030b0b18901918101b030b0b189019190d18902d1f9016ffd81b030b09111b0410001d0239001f7a0202582503f60202592503c31801220117000a1c131e00061a001f011b020b7b2217000b1c18001b000b20411f060200001f0702025a1f08180617001418001e01ca1f0718001e025b1f0816002418001f0718011e025b17001418011e025b221e025c240a00001016000518081f08180802025a402217000a1c180802025240220117000c1c1b020b79180704011700111b030b0626180018010a00021000131e00061a00221b020b82261b030b0018070a0002101d01ca1f0918080202523d1701fc1b020b7f26180018010a000210221e002b240202410a000110480019221e009d240a0000101f5018500202533e220117000a1c18500202543e1701af18061700c81800221e025d240a000010221e025e240a000010221e0121240200002500881b020b80261b040b091b040b5018000a0003101c1b020b851b030b000417001e1b030b00221e0255241b040b091b000b060201d10a0003101600171b020b6f261b040b091b000b060201d10a0003101f061b020b83261b040b0718060a0002101f071b020b81261b040b00180718000a0003101f081b030b062618081b040b010a000210000200002500161b000b1a0200002500091b050b0047001a01000a000210001600e21b020b80261809185018011e00b70a0003101c1b020b851b030b000417001c1b030b00221e02552418091b000b060201d10a0003101600151b020b6f2618091b000b060201d10a0003101fa21b020b8326180718a20a0002101fa31b020b121e025617006f18010117002a131e00061a0022131e00061a00221b020b061e02571b020b78260a0000100d1d025f1f0116004218011e025f011700231801131e00061a00221b020b061e02571b020b78260a0000100d1d025f16001918011e025f1b020b061e02571b020b78260a0000100d1b030b062618a318010a000210001600111b030b0626180018010a00021000160112180802025a3e1700fb1b020b851b030b000417001c1b030b00221e02552418091b000b060201d10a0003101600151b020b6f2618091b000b060201d10a0003101f4e1b020b83261807184e0a0002101f4f18061700271b020b81261800184f1b000b060a0003101f501b030b0626185018010a000210001600871b020b121e025617006f18010117002a131e00061a0022131e00061a00221b020b061e02571b020b78260a0000100d1d025f1f0116004218011e025f011700231801131e00061a00221b020b061e02571b020b78260a0000100d1d025f16001918011e025f1b020b061e02571b020b78260a0000100d1b030b0626184f18010a000210001600111b030b0626180018010a00021000001f071b020b7e260a0000100117000400131e02601700070016000813201d0260131e02611f061318071d0261001f7d020262250008131e0261001f7e02026325010d0200001f061b020b7b2217000b1c18001b000b204117002218001e025f221e0041240202640a0001101f07180717000718071f061806001801221700091c18011e025f1700c61b020b7c2217000e1c18011e025f1b000b214117002218011e025f221e0041240202640a0001101f17181717000718171f0618060018011e025f1b000b174117004448001f47184718011e025f1e001f3a17003218011e025f184719480019221e009d240a0000100202643d17000f18011e025f1847194801190018472d1f4716ffc618011e025f1b000b054117003618011e025f08031f8f188f21041700231f8e188e221e009d240a0000100202643e17000c18011e025f188e190016ffdc180600001f7f0202652500ba1802263e220117000a1c18020200003e1700061800001802221e0011240a0000101f0218010202533e1700771800201d01d41802221e002b240200f90a0001101f0c131e00061a001f0d180c17004a48001f0e180e180c1e001f3a17003b180d180c180e19221e002b2402002a0a0001104800191b000b22180c180e19221e002b2402002a0a000110480119040d180e2d1f0e16ffc01800180d1d00b716001718001b000b19221e02662418020a0001101d00b71800001f8002026725009318001e025f1f061b020b121e025617001f1806221e0268241b020b061e02571b020b78260a0000100a0002101c1b000b201801131e00061a002218001e025b1d025b2218061d025f2218021d00b72218001e02691d02692218001e026a1d026a2218001e026b1d026b2218001e01eb1d01eb2218001e026c1d026c2218001e026d1d026d2218001e026e1d026e1a02001f8102026f25012518011f061b020b121e02701e001f48003917008048001f0818081b020b121e02701e001f3a17006c1b020b121e02701808194800191f091809221e000f2418010a0001101700451801221e007b2418091b020b121e02701808194801190a0002101f061b020b5a1e01d2221e0023241800020271020272180128020273281806280a0003101c16000b18082d1f0816ff8a1b000b2218060418063d17000c1b000b1f1806041f061806221e0024240200e00a0001101f071807480039221700151c1806221e0274240202750a00011018073917004d1806221e00d424480018074801280a0002101f201806221e00d424180748012818061e001f0a0002101f2118201821221e002b240202750a000110221e0098240202760a000110281f061806001f8202027725002d18001800221e0024240200e00a00011048004801294017000c02027818012816000902027918012828001f8302027a2500141b020b7a1800041c1b020b7d1800041c001f8402027b25000b18001b020b8741001f8502027c250019111b000b19221e0266241b020b860a0001101d027d001f8702027e2500c01b020b061e01cc17000526001b020b85110417000a111e027d1600071b020b121f061b000b05221e01d724180618000a0002101c1b020b8a1806041c18061e027a1700201b020b8b18061e027f041c1b020b8c18061e0280041c1b020b8411041c18061e02561700131b000b1d261b020b7748000a0002101c1b020b5d260a0000101c1b020b121e028101221700091c18061e01841700271b020b12201d02811b020b37260a0000101c1b000b1d261b020b59480018060a0003101c001f8902028225006618001e018548003e220117001c1c1b000b0c221e001d2418001e01850a00011018001e01853f17000d1b020b460202831a014718001e027a17002a18001e027f1e001f48003e220117000d1c18001e027f1e00930117000d1b020b460202841a0147001f8a02028525003f48001f06180618001e001f3a17002f180018061917001f1b020b121e0235221e0093241b000b2318001806191a010a0001101c18062d1f0616ffcc001f8b02028625004f18001b000b064017004448001f06180618001e001f3a1700351b020b121e0270221e0093241b000b2318001806194800191a0118001806194801190a00020a0001101c18062d1f0616ffc6001f8c020287250011131e028822011700071c020000001f8d0202892500561b020b0f1b020b061e028a0422011700071c0200001f061b020b111b020b061e028a041c180602028b3d17000b0200001f0616001518060200003d17000c1b000b081e02691f0618061700091318061d0288001f8e211b000b051e01d743020003401700c71b000b05221e003e241b000b050201d7131e00061a00220201d72500941800263e220117000b1c18001b000b063e17000d1b000b0702028c1a01471b000b051800041f0648011f0718071b031e001f3a17005b1b031807191f08180826402217000b1c18081b000b0640170039180808031f141814210417002c1f091b000b051e00221e028d221e002324180818090a00021017000d1806180918081809190d16ffd318072d1f0716ffa01806001f8f188f1d028e22201d028f22201d02900a0003101c1b000b051e00f1011701141b000b050200002501021b000b051e00221e028d1f06131e00061a0022261d0011221e0291240200110a000110011f0702001102029202029302028d02029402029102000d0a00071f0818081e001f1f090200002500b42118004302000340221700161c211800430200014022011700081c1800263e17000d1b000b070202951a01470a00001f06180008031f121812210417002a1f071b030b06221e002324180018070a0002101700111806221e00932418070a0001101c16ffd51b030b0717004548001f0818081b030b093a1700371b030b06221e00232418001b030b081808190a0002101700161806221e0093241b030b081808190a0001101c18082d1f0816ffc518060000260a0000101d00f1131e00061a00220202961d01a32248021d01dd22121d01cc220202881d028a220202971d01df220202981d02571f06131e00061a0022121d02992248001d018522121d018422121d025622121d027a220a00001d027f220a00001d0235220a00001d0280220a00001d02702202029a1d017d2202029b1d00df2202029c1d029d1f12131e00061a001f1a14029e1f1f48001f3002000025001e1b021b020b351d029f1b0218001d02a01b020b32180048023404001f34271f3302000025002a1b021b020b361d029f1b020b30481c331800480435301f061b0218001d02a01b020b32180604001f350200002500271b021b020b341d029f1b020b321b020b30481a33180048063530041b020b3118000428001f36131e00061a0022020000250049121f061b020b85110417000f111e027d1e02991f0616000c1b020b121e02991f061806221700201c1b000b11221e0042240202a11800280202a2280202a318010a0003101c001d01d21f5a131e00061a002218631d02a42218631d01b62218621d02a52218641d01bc2218641d02a61f5b121f5c0a00001f5e0a00001f5f0a00001f600200002500091800180128001f65020000250009180018002a001f660202a71f6d0202a81f6e1b000b202217000d1c1b000b201b000b05411f7b1b000b212217000d1c1b000b211b000b05411f7c1b000b19221e00fb2418120a0001101f86186f1f8818871e002218891d027e18871e002218881d025518871e0022188d1d02871806122217000b1c180d260a0000101d01cc188e260a0000101c180018871d027c1800188d1d0287180018891d027e180018881d02551b000b05221e003e2418000202a9131e00061a0022201d028e0a0003101c000a0002101c0002aa00066d606867617609776c6667646b6c67660864776c61766b6d6c03636f6607677a726d707671064d60686761760e607b7667665d63617063756e6770046b714b470c666d61776f676c764f6d6667096b71446b7067646d7a086b7151636463706b06506765477a720b616d6c7176707761766d70016b04766771760b4a564f4e476e676f676c7608766d5176706b6c6521596d60686761762251636463706b50676f6d76674c6d766b646b6163766b6d6c5f0671636463706b107277716a4c6d766b646b6163766b6d6c0c656776566b6f677176636f7207656776566b6f670865677654636e776707606d6d6e67636c013301320c70636c666d6f5176706b6c653e32333031363734353a3b636061666764656a6b68696e6f6c6d72737071767774757a7b78434041464744454a4b48494e4f4c4d52535051565754555a5b5805646e6d6d700670636c666d6f066e676c65766a09666d6f4667766761760f596d606867617622556b6c666d755f0972706d766d767b72670461636e6e076b6c66677a4d6408466d61776f676c7612596d6068676176224c63746b6563766d705f10596d6068676176224a6b71766d707b5f0a65677644706d6f517670067176706b6c65013f0571726e6b76045939245f06616a637043760122097177607176706b6c6509656776416d6d696b670e716771716b6d6c51766d70636567076567764b76676f0c6e6d61636e51766d7063656706616d6d696b6709716776416d6d696b67077167764b76676f313f3922677a726b7067713f4f6d6c2e2230322251677222303233322232323832323832322257564139227263766a3f2d390a3922677a726b7067713f0b766d454f565176706b6c650939227263766a3f2d390966676e416d6d696b670a70676f6d74674b76676f0e66676077656567704667766761760e6667646b6c6752706d726770767b026b6608666760776565677003656776036e6d6502276107616d6c716d6e6707646b70676077650a6d77766770556b66766a0a6b6c6c6770556b66766a0b6d777667704a676b656a760b6b6c6c67704a676b656a760a6c6d66674667766761760772706d6167717110596d60686761762272706d616771715f0d726a636c766d6f46677667617607726e77656b6c71085d726a636c766d6f0b61636e6e526a636c766d6f0b5d5d6c6b656a766f637067054377666b6d1841636c74637150676c6667706b6c65416d6c76677a7630460f75676066706b7467704667766761760975676066706b746770136567764d756c52706d726770767b4c636f6771096e636c65776365677106616a706d6f670770776c766b6f6707616d6c6c676176145d5d75676066706b7467705d6774636e77637667135d5d71676e676c6b776f5d6774636e776376671b5d5d75676066706b7467705d7161706b72765d64776c61766b6d6c175d5d75676066706b7467705d7161706b72765d64776c61155d5d75676066706b7467705d7161706b72765d646c135d5d647a66706b7467705d6774636e77637667125d5d66706b7467705d776c75706372726766155d5d75676066706b7467705d776c75706372726766115d5d66706b7467705d6774636e77637667145d5d71676e676c6b776f5d776c75706372726766145d5d647a66706b7467705d776c75706372726766095d71676e676c6b776f0c61636e6e51676e676c6b776f165d51676e676c6b776f5d4b46475d5067616d7066677008666d61776f676c76056f6376616a0a5e2659632f785f66615d066163616a675d0f6b6c616d656c6b766d466776676176046d72676c096b6c616d656c6b766d076d6c6770706d7004616d66671253574d56435d475a4147474647465d47505010716d6f6749677b4a677067407b766766096b6c66677a676646400c526d6b6c7667704774676c760e4f51526d6b6c7667704774676c760a6a6d6d694667766761760d617067637667476e676f676c760661636c74637109766d4663766357504e077067726e636167035e712801650a6c63766b7467616d666714596d606867617622526e77656b6c437070637b5f0e6e6d6163766b6d6c4667766761764a5c6a767672713d385e2d5e2d2a59322f3b5f79332e317f2a5e2c59322f3b5f79332e317f2b79317f7e59632f64322f3b5f79332e367f2a3859632f64322f3b5f79332e367f2b79357f2b086e6d6163766b6d6c046a70676404646b6e67106a767672382d2d6e6d61636e6a6d717606656776457277074552574b4c444d0a656776416d6c76677a7605756760656e0c656776477a76676c716b6d6c19554740454e5d66676077655d70676c66677067705d6b6c646d0c656776526370636f6776677015574c4f43514947465d54474c464d505d554740454e17574c4f43514947465d50474c46475047505d554740454e012d0a656776526e77656b6c7106524e57454b4c046b76676f047277716a04767b7267046c636f6707746770716b6d6c08646b6e676c636f6704686d6b6c02212105716e6b61670c616d6c716b7176416a67616909777167704365676c760b766d4e6d7567704163716708726e6376646d706f07756b6c666d757103756b6c07636c66706d6b66056e6b6c777a066b726a6d6c67046b726366046b726d66036f6361096f63616b6c766d716a0c6f63615d726d75677072612b0461706d71037a33330561706b6d7105647a6b6d7104726b696708646b7067646d7a2d066d726770632d05226d72702d07616a706d6f672d0876706b66676c762d046f716b670674676c666d7006456d6d656e670568716d6c7204606d667b14656776476e676f676c7671407b5663654c636f67046a676366067161706b7276015d0961636e6e606361693f037170610b70676f6d7467416a6b6e660b637272676c66416a6b6e660e766d406b6c63707b5176706b6c650c64706d6f416a6370416d66670d766d576b6c763130437070637b0a616a6370416d66674376056b6c7631300a36303b363b3435303b37026f7a04646b7a6912676c61707b7276576b6c763130437070637b12666761707b7276576b6c763130437070637b0a7776643a476c616d66670e5c595e7a32322f5e7a35645f2826104f636e646d706f6766227176706b6c65157776643a4667616d6667516a6d70765176706b6c651f576c646b6c6b716a6766225756442f3a226d617667762271677377676c616729416a63706361766770226d7776716b66672274636e6b6622576c6b616d66672270636c65673822327a15406366225756442f3a22676c616d666b6c6522327a147776643a4667616d66674e6d6c655176706b6c650a7776643a4667616d66670e5c595e7a32322f5e7a64645f282606717760717670057a7a76676307666761707b72760e6063716734365176636c666370664046696672656a3658497153403a322d4f64747531345a4b33503037295557436e476b354c4e606d735b564d5277786f4468486c707b7a3b4a5445616351764167106063716734365d616a63704b6c66677a40434041464744454a4b48494e4f4c4d52535051565754555a5b58636061666764656a6b68696e6f6c6d72737071767774757a7b7832333031363734353a3b292d146063716734365176636c666370664667616d6667096063716734365d616a066034365d313208656776526370636f08726370636f57706e013d026d6c036d64640971677651756b76616a0e5d726370636f51756b76616a4d6c0f5d607b7667665d726370636f5d71751265677651756b76616a44706d6f4163616a670f666776676176436c6d6f636e6b67710a666b70676176516b656c0a616d6c716b7176676c760671756b76616a03666d6f046c6d666707726a636c766d6f046a6d6d690b76677176446763767770670e637171676f606e67506771776e760469677b710b7166606f5d717663606e67047166606f107166606f5d717663606e675d726d6c7b076567765263766a222a6a767672385e2d5e2d7e6a76767271385e2d5e2d7e5e2d5e2d2b3d595c5e2d5f2808656776537767707b0e593d5f2a5e75293f2c28243d2b280124076d6068516d7076097176706b6c656b647b02797f04716d70760868716d6c516d7076076b71437070637b036f637206706766776167076d6068305176701261636c7463715d646b6c65677072706b6c7605756b66766a066a676b656a760230660a3336727a227167706b6404646d6c7608646b6e6e56677a7604c09f9a8e138e22c0acbf0a716a63666d75406e77700b716a6d754d64647167765a046e6b6f6709716a6d75416d6e6d7003637061067176706d69670965677641636c7463710a313531373b303a37373b0f416d6c646b65477a616772766b6d6c076f677171636567116a6371516771716b6d6c51766d706365670f6a63714e6d61636e51766d706365670c6a63714b6c66677a676646400c65677643606b6e6b766b67710d6567765067716d6e77766b6d6c0671617067676c0a616d6e6d70466772766a126567764374636b6e5067716d6e77766b6d6c0a6374636b6e556b66766a0b6374636b6e4a676b656a760e6567764063767667707b4b6c646d0a6567764063767667707b04766a676c08616a6370656b6c650c616a6370656b6c65566b6f670f666b71616a6370656b6c65566b6f67056e6774676e0c656776566d77616a4b6c646d0e6f637a566d77616a526d6b6c76710b6170676376674774676c760a566d77616a4774676c760c6d6c766d77616a71766370760b656776566b6f67786d6c670771677646637667087167764f6d6c766a11656776566b6f67786d6c674d6464716776036f6b6c08656776446d6c7671096f6d6c6d71726361670a71636c712f7167706b64057167706b64047172636c0d6f6f6f6f6f6f6f6f6f6f6e6e6b096b6c6c67704a564f4e0571767b6e67043530727a08646d6c76516b78670a646d6c7644636f6b6e7b0b6d6464716776556b66766a0c6d64647167764a676b656a760c5670676077616a6776224f5109556b6c65666b6c657107517b6e6463676c085167656d6722574b0a416d6c7176636c766b630b516b6f51776c2f477a7640084f5622477a7670630545776e6b6f0a4e67676e6375636667670556776c6563064f676b707b6d0654706b6c666309416d70666b63575241094372637063686b7663074b706b715752410852636e63766b6c6d0a416d6e6d6c6c63224f5608526e637b606b6e6e08486d6967706f636c09526370616a6f676c760a4f51224d77766e6d6d690956752241676c224f56064d52564b4f4306447776777063064354474c4b500c43706b636e224a67607067750a5163746d7b67224e47560941637176676e6e63700a4f5b504b43462252504d012e0e656776517b6c76637a4770706d701041706763766722556760516d616967760f6567764c63766b74674e676c65766a086567765076614b720b746b746d60706d757167701150564152676770416d6c6c6761766b6d6c146f6d7850564152676770416d6c6c6761766b6d6c17756760696b7650564152676770416d6c6c6761766b6d6c1c7176776c387176776c2c6e2c656d6d656e672c616d6f38333b3132300477706e710a6b6167516770746770713e2a59322f3b5f79332e317f2a5e2c59322f3b5f79332e317f2b79317f7e59632f64322f3b5f79332e367f2a3859632f64322f3b5f79332e367f2b79357f2b355c2a333b305e2c33343a5e2c7e33343b5e2c3037365e2c7e33325e2c7e3335305e2c2a3359342f3b5f7e305e667e315932335f2b2b1161706763766746637663416a636c6c676e0b6170676376674d64646770137167764e6d61636e46677161706b72766b6d6c0961636c666b6663766704677a67610e6d6c6b616761636c666b666376670477776b66207a7a7a7a7a7a7a7a7a7a7a7a367a7a7a7b7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a04597a7b5f017a0d616a676169416e6b676c764b660b656776416e6b676c764b66057676616b660d676c61707b7276516761466b6640434041464744454a4b48494e4f4c4d52535051565754555a5b58636061666764656a6b68696e6f6c6d72737071767774757a7b7832333031363734353a3b2f2c0e637171676f606e67526370636f710172017007646d704763616a025c5c01340c647252706d646b6e6757706e033d733f087067765d616d66670264720e5d607b7667665d7167615d666b660c5d7063755d7167615d666b660776765d71616b660366647203636b66016c0164097176637076566b6f6701760963606b6e6b766b67710a766b6f677176636f7233136a63706675637067416d6c61777070676c617b0c6667746b61674f676f6d707b086e636c65776365670a7067716d6e77766b6d6c0f6374636b6e5067716d6e77766b6d6c0971617067676c566d720a71617067676c4e676476106667746b6167526b7a676e5063766b6d0a72706d66776176517760076063767667707b09766d77616a4b6c646d08766b6f67786d6c670a766b6f677176636f7230076572774b6c646d0b6871446d6c76714e6b71760b726e77656b6c714e6b71760a766b6f677176636f72310a67746770416d6d696b67016f0b717b6c76637a4770706d700c6c63766b74674e676c65766a057076614b52096472546770716b6d6c0b5d5d746770716b6d6c5d5d08616e6b676c764b660a766b6f677176636f72360b677a76676c66446b676e6603636e6e107176637076516b6f726b646b67665760106366664774676c764e6b7176676c677009636666566d4e6b71760671726e6b61670166017b136a636c666e6749677b606d6370664774676c7606636e7649677b076176706e49677b076f67766349677b08716a6b647649677b036c6d75136a636c666e67526d716b766b6d6c4774676c760e616a636c656766566d77616a677109766d77616a6f6d746707766d77616a6771023b3007616e6b676c765a07616e6b676c765b106a636c666e67416e6b61694774676c760a766d77616a71766370760861636e614f67636c1561636e615176636c666370664667746b63766b6d6c04717370760961636e61517267676604322c323315656776516b6f726e6b646b67665760506771776e7603322c3702323209656776566771764b660b5d5d63615d766771766b660f65676c6770637667566771764e6d6501600c656776516b656c63767770670377706e2c6c6d6c6167226f77717622606722636c226d606867617622756b766a22632277706e2272706d726770767b230b666d6f4c6d7654636e6b660872706d766d616d6e043232323208323232323232333302333207646d707067636e056667607765056c6d6c61670b606d667b54636e307176700a606d667b5d6a63716a3f05737767707b066371716b656c097263766a6c636f673f0976765d7567606b663f062477776b663f086c6d6c61675176700a36303b363b3435303b34096467546770716b6d6c033232320b7277716a546770716b6d6c01280a65677654636e77672633106c63746b6563766d70516b656c636e710b637272416d66674c636f67076372724c636f670772706d6677617608617277416e637171056d716172770974676c666d705177600a666d4c6d76567063616907746b60706376670b61706766676c766b636e710771766d706365671b706773776771764f67666b6349677b517b7176676f43616167717109606e7767766d6d766a0d756b6c666d75516b656c636e71054b6f6365670771617067676c5a0771617067676c5b0f6b71516761777067416d6c76677a7607766d6d6e6063700b6e6d6163766b6d6c6063700d4361766b74675a4d606867617608677a7667706c636e0b726d71764f6771716365671b756760696b7650677377677176436c6b6f63766b6d6c4470636f670d406e7767766d6d766a57574b46086c677671616372670f666d61776f676c76516b656c636e710c616a637063617667705167760a616d6f7263764f6d6667066e637b677071066b6f636567710e656776556760656e41636c74637112677a7267706b6f676c76636e2f756760656e0d6f637a436c6b716d76706d727b1e475a565d76677a767770675d646b6e7667705d636c6b716d76706d726b6125554740494b565d475a565d76677a767770675d646b6e7667705d636c6b716d76706d726b61224f4d585d475a565d76677a767770675d646b6e7667705d636c6b716d76706d726b611e4f435a5d56475a565750475d4f435a5d434c4b514d56504d525b5d475a560c756760656e516b656c636e7105554740454e16656776517772726d70766766477a76676c716b6d6c7113717772726d70766766477a76676c716b6d6c7114656776416d6c76677a76437676706b607776677109636c766b636e6b637109404e57475d404b565108606e7767406b76710a464752564a5d404b565109666772766a406b76710a455047474c5d404b565109657067676c406b7671204f435a5d414d4f404b4c47465d56475a565750475d4b4f4345475d574c4b56511c6f637a416d6f606b6c676656677a767770674b6f636567576c6b7671194f435a5d415740475d4f43525d56475a565750475d514b5847156f637a417760674f637256677a76777067516b78671c4f435a5d445043454f474c565d574c4b444d504f5d544741564d5051196f637a447063656f676c76576c6b646d706f546761766d7071154f435a5d50474c4647504057444447505d514b5847136f637a50676c666770607764646770516b7867174f435a5d56475a565750475d4b4f4345475d574c4b5651146f637a56677a767770674b6f636567576c6b7671104f435a5d56475a565750475d514b58470e6f637a56677a76777067516b7867134f435a5d5443505b4b4c455d544741564d5051116f637a5463707b6b6c65546761766d7071124f435a5d54475056475a5d435656504b4051106f637a54677076677a437676706b60711e4f435a5d54475056475a5d56475a565750475d4b4f4345475d574c4b56511a6f637a54677076677a56677a767770674b6f636567576c6b76711a4f435a5d54475056475a5d574c4b444d504f5d544741564d5051176f637a54677076677a576c6b646d706f546761766d707118514a43464b4c455d4e434c45574345475d544750514b4d4c16716a63666b6c654e636c6577636567546770716b6d6c0c5156474c414b4e5d404b56510b7176676c616b6e406b767107544750514b4d4c066563766a6770096c63746b6563766d7006756b6c666d7503657277075147414b4c444d0a6567765167614b6c646d09766b6f677176636f720d6b71476c63606e67665263766a145d676c63606e675263766a4e6b7176506765677a0c6b6c766770616772765a4a500e5a4f4e4a7676725067737767717610716776506773776771764a67636667700471676c66106d746770706b66674f6b6f67567b72670f5d63615d6b6c766770616772766766055d71676c66155d607b7667665d6b6c766770616772765d6e6b71760464776c6109637065776f676c76710e5c616d6c76676c762f767b72672601390e5d607b7667665d616d6c76676c76115d6d746770706b66674f6b6f67567b72670d5d607b7667665d6f67766a6d660a5d607b7667665d77706e076d6c63606d7076066d6c6e6d6366096d6c6e6d6366676c660b6d6c6e6d636671766370760a6d6c72706d6570677171096d6c766b6f676d77760b5d716b656c63767770673f0b5d607b7667665d606d667b126d6c706763667b7176637667616a636c65670c706771726d6c7167567b726707766b6f676d77760677726e6d636604524d5156216372726e6b6163766b6d6c2d7a2f7575752f646d706f2f77706e676c616d666766106372726e6b6163766b6d6c2d68716d6c04716b656c0371666b0d7167614b6c646d4a67636667700e6b6c76677061677276446776616a0975706372446776616a03454756066f67766a6d660b766d57727267704163716705616e6d6c670476677a76076a676366677071165d5d63615d6b6c7667706167727667665d646776616a05646776616a0d717772726d707671446776616a145d656776446776616a416d6c76676c76567b72670c616d6c76676c762f767b72670b7772666376674c6d6c61670572637071670f60776b6e664c677550677377677176037167760870676467707067700e7067646770706770526d6e6b617b046f6d6667056163616a67087067666b70676176096b6c766765706b767b0e656776506775706b76676657706e105d77706e506775706b766750776e67710b706775706b766757706e22084d504b454b4c38220b08504755504b56474638220b6e6371764b6c66677a4d640125032730350860776b6e6657706e0c245d716b656c63767770673f0c3d5d716b656c63767770673f096b6c76677061677276196b714b6c7176636c61674d64407b76676643617063756e67700d407b76676643617063756e6770076d72766b6d6c71046b6c6b760e676c63606e675263766a4e6b71760f77706e506775706b766750776e6771045d6664720f74636e6b666376674d72766b6d6c711e6d72766b6d6c22636b662a4b6c76676567702b226b71226c676766676623276d72766b6d6c22676c63606e675263766a4e6b71762a437070637b2b226b71226c6767666766231065676c5263766a4e6b7176506765677a1265676c57706e506775706b7667506765677a0a656776506764677067700c5d5d63615d70676467706770106667636e506764677067704163616a670a7067646770677049677b0a5d5d63615d606e636c692a41636c6c6d7622616d6c7467707622776c6667646b6c6766226d70226c776e6e22766d226d60686761760e6a63714d756c52706d726770767b0574636e77670875706b7663606e670c616d6c646b65777063606e671472706d726770767b4b71476c776f677063606e670e766d4e6d61636e675176706b6c650774636e77674d640d6b7152706d766d767b72674d64204d60686761762c69677b712261636e6e6766226d6c226c6d6c2f6d606867617606302c33332c320640365834756d0c5a2f4f717166692f4b6c646d03606d67296a76767271382d2d7a7a60652c716c717166692c616d6f2d7567607166692d74332d6567764b6c646d236a76767271382d2d7a7a60652c716c717166692c616d6f2d7567607166692d74332d72236a76767271382d2d7a7a60652c716c717166692c616d6f2d7567607166692d74332d7605776057706e0a3034373636313735343b02373302363a03276122022f3c0d616d6e6d703821603333376630096f6d7771676f6d74670769677b666d756c096f6d777167666d756c0232300232330a5d5d67714f6d66776e67",[,,"undefined"!=typeof exports?exports:void 0,"undefined"!=typeof module?module:void 0,"undefined"!=typeof define?define:void 0,"undefined"!=typeof Object?Object:void 0,void 0,"undefined"!=typeof TypeError?TypeError:void 0,"undefined"!=typeof document?document:void 0,"undefined"!=typeof InstallTrigger?InstallTrigger:void 0,"undefined"!=typeof safari?safari:void 0,"undefined"!=typeof Date?Date:void 0,"undefined"!=typeof Math?Math:void 0,"undefined"!=typeof navigator?navigator:void 0,"undefined"!=typeof location?location:void 0,"undefined"!=typeof history?history:void 0,"undefined"!=typeof Image?Image:void 0,"undefined"!=typeof console?console:void 0,"undefined"!=typeof PluginArray?PluginArray:void 0,"undefined"!=typeof indexedDB?indexedDB:void 0,"undefined"!=typeof DOMException?DOMException:void 0,"undefined"!=typeof parseInt?parseInt:void 0,"undefined"!=typeof String?String:void 0,"undefined"!=typeof Array?Array:void 0,"undefined"!=typeof Error?Error:void 0,"undefined"!=typeof JSON?JSON:void 0,"undefined"!=typeof Promise?Promise:void 0,"undefined"!=typeof WebSocket?WebSocket:void 0,"undefined"!=typeof eval?eval:void 0,"undefined"!=typeof setTimeout?setTimeout:void 0,"undefined"!=typeof encodeURIComponent?encodeURIComponent:void 0,"undefined"!=typeof encodeURI?encodeURI:void 0,"undefined"!=typeof Request?Request:void 0,"undefined"!=typeof Headers?Headers:void 0,"undefined"!=typeof decodeURIComponent?decodeURIComponent:void 0,"undefined"!=typeof RegExp?RegExp:void 0]);
</script> <script>function _f1(e,t){if("string"!=typeof t)return;var o,n=e+"=",r=t.split(/[;&]/);for(var e=0;e<r.length;e++){for(o=r[e];" "===o.charAt(0);)o=o.substring(1,o.length);if(0===o.indexOf(n))return o.substring(n.length,o.length)}return""}function _f2(e){return _f1(e,document.cookie)}function _f3(e,t,o){try{o&&(window.sessionStorage&&window.sessionStorage.setItem(e,t),window.localStorage&&window.localStorage.setItem(e,t));var n=31536e6;document.cookie=e+"=; expires=Mon, 20 Sep 1970 00:00:00 UTC; path=/;"+(window.location.protocol == 'https:' ? 'SameSite=None; Secure;' : ''),document.cookie=e+"="+t+"; expires="+new Date((new Date).getTime()+n).toGMTString()+"; path=/;"+(window.location.protocol == 'https:' ? 'SameSite=None; Secure;' : '')}catch(e){}}window.byted_acrawler.init({aid:99999999,dfp:0});var __ac_nonce=_f2("__ac_nonce"),__ac_signature=window.byted_acrawler.sign("",__ac_nonce);_f3("__ac_signature",__ac_signature),_f3("__ac_referer",document.referrer||"__ac_blank",!0);try{sessionStorage.setItem("__ac_ns",performance.timing.navigationStart)}catch(e){};window.location.reload();</script></html>

这东西使用了一个叫jsvmprt的技术,具体是怎么用的什么原理我没搞懂,有个类似的今日头条,有视频讲解补环境https://www.bilibili.com/video/BV1hi4y1B7zk/?spm_id_from=333.337.search-card.all.click&vd_source=d285499954de6b26090801ce7c0fde25

直接从23:50看起,

使用这种方式补环境,关键点在于第二行后面的url,快的一批。不过是不是所有网站通用的,还没有测试过,目前只试过这一个

1
2
3
4
5
6
7
8
9
const {JSDOM} = require('jsdom');
const dom = new JSDOM(`<!DOCTYPE html><p>Hello world</p>`,{url:'https://www.douyin.com/'});

window=global;
document=dom.window.document;
document.referrer = 'https://www.douyin.com/';

window.navigator = dom.window.navigator;
window.location = dom.window.location;

环境补好后,获取ttwid的代码很快就写好了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import httpx
import execjs
import logging
from os import environ


logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

def get_headers(nonce="", signature=""):
return {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.6",
"Cookie": "__ac_nonce={}; __ac_signature={}; __ac_referer=__ac_blank".format(nonce, signature)
}

def get_ttwid():
# 发送两次请求,第一次请求携带空Cookie去获取nonce,根据nonce生成后signature
# 第二次请求携带空signature和nonce去获取ttwid
url = environ.get("DOUYIN_URL", "https://www.douyin.com/")
timeout = httpx.Timeout(60.0) # 设置超时时间为60秒

try:
with httpx.Client(http2=True) as client:
headers = get_headers()
resp1 = client.get(url, headers=headers, timeout=timeout)
resp1.raise_for_status() # 检查响应状态码

nonce = resp1.cookies.get("__ac_nonce")
if not nonce:
logger.error("Failed to get nonce")
return None
logger.info(f"nonce为: {nonce}")

signature = get_sign(nonce)
if not signature:
logger.error("Failed to get signature")
return None
logger.info(f"signature为: {signature}")

headers = get_headers(nonce, signature)
resp2 = client.get(url, headers=headers, timeout=timeout)
resp2.raise_for_status() # 检查响应状态码

ttwid = resp2.cookies.get("ttwid")
logger.info(f"ttwid为: {ttwid}")
return ttwid
except httpx.RequestError as e:
logger.error(f"An error occurred while requesting the URL: {e}")
return None
except Exception as e:
logger.error(f"An unexpected error occurred: {e}")
return None



def get_sign(nonce):
try:
with open('index1.js', 'r', encoding='utf-8') as file:
js_code = file.read()
ctx = execjs.compile(js_code,cwd=r"C:\Users\This_is_Y\AppData\Roaming\npm\node_modules")
sign = ctx.call('window.byted_acrawler.sign', "",nonce)
except Exception as e:
print("pass")
return sign

mstoken

在这个文件中,https://lf-c-flwb.bytetos.com/obj/rc-client-security/c-webmssdk/1.0.0.20/webmssdk.es5.js

image-20250102203923015

可以通过直接搜索mstoken定位到,在页面刷新才会运行这里的代码,似乎与本地存储中的xmst有关。

1
2
_0x180b4c = _0x37f15d(),
_0x180b4c && (_0x402a35['msToken'] = _0x180b4c,

image-20250102204442691

a_bogus

 评论
评论插件加载失败
正在加载评论插件
由 Hexo 驱动 & 主题 Keep
访客数 访问量