jierry1980 / - Goto Github PK
View Code? Open in Web Editor NEWhttps://www.123pan.com/s/LuN5Vv-74Y1h.html 提取码:4fTF(某连无限重置版)
https://www.123pan.com/s/LuN5Vv-74Y1h.html 提取码:4fTF(某连无限重置版)
https://github.com/Snoopy1866/LiTiaotiao-Custom-Rules
规则如下:
[
{
"-1835777899": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"},{"id":"common_confirm_dialog_center_layout","action":"common_confirm_dialog_cancel"},{"id":"打开定位","action":"我知道了"},{"id":"及时获取&消息","action":"取消"},{"id":"tv_love_sub_title","action":"iv_close_love_tips"},{"id":"打开通知","action":"iv_notice_close"}]}"
},
{
"320552729": "{"popup_rules":[{"id":"立即更新","action":"稍后更新"}]}"
},
{
"-330301876": "{"popup_rules":[{"id":"native_ad_container","action":"topon_btn_close"},{"id":"csj_ad_logo","action":"csj_btn_close"},{"id":"| 跳过","action":"| 跳过"},{"id":"再看&可领奖励","action":"坚持退出"}],"click_way_popup":1}"
},
{
"2130042610": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"}]}"
},
{
"1386065562": "{"popup_rules":[{"id":"init_top_img","action":"init_time_text"}]}"
},
{
"960022320": "{"popup_rules":[{"id":"给您发送通知","action":"不接收"}]}"
},
{
"361910168": "{"popup_rules":[{"id":"lpk","action":"关闭"},{"id":"=广告","action":"=更多"},{"id":"=关闭此条广告","action":"=关闭此条广告"},{"id":"=立即前往","action":"close"}]}"
},
{
"-1518567568": "{"popup_rules":[{"id":"请评价我们的产品","action":"下次再说"}]}"
},
{
"239830085": "{"popup_rules":[{"id":"发现新版本","action":"稍后更新"},{"id":"限时&星币购买","action":"GLOBAL_ACTION_BACK"},{"id":"关注我","action":"b3p"},{"id":"推送通知&开启","action":"dhf"}]}"
},
{
"706813998": "{"popup_rules":[{"id":"打开推送通知","action":"暂不开启"},{"id":"开启通知权限","action":"取消"},{"id":"打开通知权限","action":"暂不开启"},{"id":"main_iv_limit_confirm","action":"main_iv_limit_close"},{"id":"host_lockscreen_guide_alert_dialog_rich_confirm_title_tv","action":"host_lockscreen_guide_alert_dialog_rich_confirm_cancel_btn"},{"id":"host_layout_vote_title","action":"host_timeline_card_close"},{"id":"main_x_play_anchor_shop_cover","action":"main_x_play_anchor_shop_close_btn"},{"id":"live_iv_bottom_close","action":"live_iv_bottom_close"},{"id":"立即抽奖","action":"GLOBAL_ACTION_BACK"},{"id":"有通行证奖励可领取","action":"引导关闭按钮"},{"id":"liveExitDialogBg","action":"liveBtnExit"},{"id":"main_ad_broadside_img","action":"main_ad_broadside_close"}]}"
},
{
"-2028968188": "{"popup_rules":[{"id":"iv_home_ad_bg","action":"iv_home_ad_close"},{"id":"iv_invite_icon","action":"iv_invite_close"}]}"
},
{
"-103523392": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"},{"id":"进入直播间热聊","action":"稍后再说"},{"id":"开启地理位置权限","action":"拒绝"}]}"
},
{
"1695025949": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"}]}"
},
{
"847156324": "{"popup_rules":[{"id":"=立即更新","action":"=取消"},{"id":"ad_time_view","action":"=关闭"},{"id":"关闭广告","action":"=不感兴趣"},{"id":"不感兴趣&举报广告","action":"=不感兴趣"},{"id":"coolapk_card_view","action":"close_view"}]}"
},
{
"-833566134": "{"popup_rules":[{"id":"发现新版本","action":"下次再说"}]}"
},
{
"-1864872766": "{"popup_rules":[{"id":"恭喜获得&红包","action":"unused_res_a"},{"id":"狠心离开&去看看","action":"狠心离开"},{"id":"=logo","action":"=close"}]}"
},
{
"-558836051": "{"popup_rules":[{"id":"reaper_ad_source_layout","action":"close"},{"id":"adv_main","action":"iv_close"}]}"
},
{
"-2114933808": "{"popup_rules":[{"id":"ksad_interstitial_native","action":"ksad_auto_close_btn"},{"id":"ad_area","action":"close_btn","delay_popup":5000},{"id":"img_native","action":"img_native_close"},{"id":"iv_apk_icon","action":"iv_close"},{"id":"广告","action":"跳过"},{"id":"tv_feedback_submit","action":"iv_feedback_close"}]}"
},
{
"1893781697": "{"popup_rules":[{"id":"新版体验邀请","action":"bt_cancel_experience"},{"id":"tv_red_envelop_main_title","action":"img_cf_view_close"},{"id":"img_floating_ad_cmb","action":"img_close_floating_ad_cmb"},{"id":"定位服务","action":"btn_mid_center_couple_negative"},{"id":"真的要放弃吗","action":"残忍离开"},{"id":"img_cmb_drag_pendant_close","action":"img_cmb_drag_pendant_close"}]}"
},
{
"342704719": "{"popup_rules":[{"id":"升级提醒","action":"稍后再说"}]}"
},
{
"-1488821919": "{"popup_rules":[{"id":"打开通知","action":"iv_close"}]}"
},
{
"-811421306": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"},{"id":"mLinSignBg","action":"imgSignClone"},{"id":"打开&推送通知","action":"以后再说"}]}"
},
{
"114295028": "{"popup_rules":[{"id":"updata_title","action":"update_close"}]}"
},
{
"2053958218": "{"popup_rules":[{"id":"允许&推送通知","action":"取消"},{"id":"dialog_card","action":"dialog_close"}]}"
},
{
"-895263099": "{"popup_rules":[{"id":"更新提示","action":"取消"}]}"
},
{
"332614644": "{"popup_rules":[{"id":"首次答题特权","action":"iv_remind_close"}]}"
},
{
"1143986695": "{"popup_rules":[{"id":"发现新版本","action":"tv_ignore_this_version"},{"id":"开启系统日历的访问权限","action":"取消"}]}"
},
{
"-796004189": "{"popup_rules":[{"id":"想给你发送通知","action":"不允许"}]}"
},
{
"-1053900032": "{"popup_rules":[{"id":"suite_completed_ads_container","action":"suite_completed_close_ad_button"}]}"
},
{
"-895188853": "{"popup_rules":[{"id":"huyaui_float_notify_count_close","action":"huyaui_float_notify_count_close"},{"id":"开启通知,不错过订阅的主播开播","action":"iv_right"},{"id":"push_popup_sec_txt","action":"GLOBAL_ACTION_BACK"}]}"
},
{
"1875899872": "{"popup_rules":[{"id":"开启定位权限","action":"home_close_img"}]}"
},
{
"1319538838": "{"popup_rules":[{"id":"开启推送","action":"push_set_close_img"},{"id":"完善昵称有利于收获更多的粉丝","action":"close_img"}]}"
},
{
"-1031558479": "{"popup_rules":[{"id":"发现新版本","action":"GLOBAL_ACTION_BACK"},{"id":"送你&新人购物券","action":"GLOBAL_ACTION_BACK"},]}"
},
{
"1219698816": "{"popup_rules":[{"id":"青少年模式","action":"pop_youngset_know_txt"},{"id":"newuser_fuli_img_intent","action":"newuser_fuli_img_closed"},{"id":"tv_notice_content","action":"tv_notice_content"}]}"
},
{
"-557467920": "{"popup_rules":[{"id":"开启消息通知","action":"取消"}]}"
},
{
"-747700391": "{"popup_rules":[{"id":"立即免费领取","action":"ivClose"},{"id":"新用户福利仅一次","action":"放弃福利"},{"id":"开通会员&特惠","action":"ivClose"}]}"
},
{
"-189732215": "{"popup_rules":[{"id":"banner_image","action":"image_close_banner"}]}"
},
{
"1765779203": "{"popup_rules":[{"id":"red_packet_content","action":"red_packet_close"},{"id":"bn_","action":"bs3"},{"id":"添加桌面小组件","action":"GLOBAL_ACTION_BACK"}]}"
},
{
"502255059": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"},{"id":"开启消息通知","action":"arg"}]}"
},
{
"2091464343": "{"popup_rules":[{"id":"发现新版本","action":"以后再说"},{"id":"获取&剪切板","action":"不允许"},{"id":"开启推送通知","action":"取消"},{"id":"drag_img","action":"close_btn"},{"id":"图片跳转","action":"此图片未加标签"},{"id":"ad_image","action":"close_btn"},{"id":"img_advertlogo","action":"iv_close_top"}]}"
},
{
"991562021": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"}]}"
},
{
"-322418038": "{"popup_rules":[{"id":"upgrade_dialog_cancel","action":"upgrade_dialog_cancel"}]}"
},
{
"-1709882794": "{"popup_rules":[{"id":"update_title","action":"btn_close"},{"id":"bottom_center_close_button","action":"bottom_center_close_button"},{"id":"订单已满&优惠换购","action":"放弃机会"},{"id":"恭喜你获得以下权益","action":"GLOBAL_ACTION_BACK"},{"id":"popContentImg","action":"popCloseBtn"}]}"
},
{
"1536737232": "{"popup_rules":[{"id":"打开通知,及时收到互动消息","action":"right_icon"},{"id":"选择通知类型","action":"暂不开启"},{"id":"bottom_process_tv","action":"close"},{"id":"使用您的位置信息","action":"以后再说"},{"id":"tv_tips","action":"iv_close_icon"},{"id":"不感兴趣&为何会看到此广告","action":"不感兴趣"},{"id":"tv_tips","action":"iv_close_icon"},{"id":"不感兴趣&屏蔽此博主","action":"不感兴趣"},{"id":"left_img_ad_tag","action":"close"},{"id":"关注你感兴趣的超话","action":"iv_close"},{"id":"定位服务未开启","action":"以后再说"},{"id":"点击签到","action":"GLOBAL_ACTION_BACK"},{"id":"给我们评分","action":"不了,谢谢"},{"id":"card_view","action":"right_top_tag"},{"id":"不感兴趣&内容质量差","action":"不感兴趣"},{"id":"错过了&爆词&查看详情","action":"mIvRight"}]}"
},
{
"560468770": "{"popup_rules":[{"id":"openAlertText","action":"btn_close_update_setting"}]}"
},
{
"1984799751": "{"popup_rules":[{"id":"da_container","action":"closeAd"},{"id":"itah_layout","action":"closeAd"},{"id":"iltas_ad_layout","action":"closeAd"}]}"
},
{
"1596265335": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"},{"id":"fl_newcomer_gift","action":"iv_close"},{"id":"banner_icon_iv","action":"colse_iv"},{"id":"tv_usercenter_notify_title","action":"iv_usercenter_notify_close"},{"id":"VIP限时超低价","action":"icon_close_popup"},{"id":"ad_name_tv","action":"ad_close_iv"},{"id":"free_mode_dialog_image","action":"dialog_close_btn"}]}"
},
{
"1073158053": "{"popup_rules":[{"id":"新版本","action":"取消"},{"id":"dialog_full_image","action":"dialog_full_image_close"}]}"
},
{
"1683280386": "{"popup_rules":[{"id":"发现&新版本&立即升级","action":"GLOBAL_ACTION_BACK"},{"id":"青少年模式","action":"我知道了"}]}"
},
{
"-1960346768": "{"popup_rules":[{"id":"ad_content","action":"btnClose"}]}"
},
{
"1272214412": "{"popup_rules":[{"id":"想给您发送通知","action":"暂不"}]}"
},
{
"725735704": "{"popup_rules":[{"id":"青少年守护模式","action":"tv_confirm"}]}"
},
{
"-733096426": "{"popup_rules":[{"id":"更新Telegram","action":"请稍后提醒我"}]}"
},
{
"-1414602254": "{"popup_rules":[{"id":"恭喜!你收到新人现金红包","action":"dtj"},{"id":"朋友推荐","action":"close"},{"id":"朋友推荐","action":"不感兴趣"},{"id":"朋友推荐","action":"关闭"},{"id":"青少年模式","action":"关闭"},{"id":"资料完善度&继续完善","action":"关闭"}]}"
},
{
"651433099": "{"popup_rules":[{"id":"发现新版本","action":"暂不更新"},{"id":"开启消息通知","action":"notice_dialog_cancel_iv"},{"id":"打开消息通知","action":"close"},{"id":"订阅微信通知","action":"cancel_iv"},{"id":"写好评,鼓励一下","action":"不了,谢谢"}]}"
},
{
"28505069": "{"popup_rules":[{"id":"dialog_once_price_iv_buy","action":"dialog_once_price_iv_cancel"}]}"
},
{
"-1854575849": "{"popup_rules":[{"id":"查看&分享的文件","action":"立即查看"}]}"
},
{
"-1730999113": "{"popup_rules":[{"id":"开启&终端管理","action":"暂不开启"}]}"
},
{
"876496474": "{"popup_rules":[{"id":"立即领现金","action":"unused_res_a"},{"id":"unused_res_a","action":"=关闭"}]}"
},
{
"-30728625": "{"popup_rules":[{"id":"立即更新","action":"GLOBAL_ACTION_BACK"},{"id":"打开通知权限","action":"取消"},{"id":"精选内容","action":"Close"}]}"
},
{
"1877659010": "{"popup_rules":[]}"
},
{
"2078928257": "{"popup_rules":[{"id":"activity_guide_animation","action":"跳过"},{"id":"打开通知权限","action":"取消"}]}"
},
{
"1276497535": "{"popup_rules":[{"id":"有新版本&升级","action":"暂不升级"},{"id":"bar_close","action":"bar_close"}]}"
},
{
"293886959": "{"popup_rules":[{"id":"抢先体验","action":"取消"}]}"
},
{
"1799462192": "{"popup_rules":[{"id":"ad_title","action":"ad_close_btn"}]}"
},
{
"1366626055": "{"popup_rules":[{"id":"tv_teen_dialog_title","action":"young_dialog_close_img"},{"id":"txt_push_open_title","action":"btn_open_cancel"},{"id":"七猫新人红包","action":"iv_close_bonus"},{"id":"red_packet_img","action":"close_red_packet"},{"id":"imageView","action":"imageView_close"},{"id":"read_view","action":"close"},{"id":"ad_privacy_view","action":"iv_ad_direct_close"},{"id":"ll_ad_bottom_remind_group","action":"ad_direct_close"}]}"
},
{
"-1544055932": "{"popup_rules":[{"id":"青少年守护模式","action":"我知道了"},{"id":"head_img","action":"close"},{"id":"tv_name","action":"iv_del"}]}"
},
{
"1907791813": "{"popup_rules":[{"id":"button_open_continue_pay","action":"close"},{"id":"新功能","action":"btn_close"}]}"
},
{
"-524269385": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"},{"id":"widget_close_icon","action":"widget_close_icon"},{"id":"关注Ta","action":"GLOBAL_ACTION_BACK"}]}"
},
{
"2092879561": "{"popup_rules":[{"id":"青少年守护","action":"已满14岁"},{"id":"cancelButton","action":"cancelButton"},{"id":"去&应用市场&评价","action":"取消"}]}"
},
{
"229330387": "{"popup_rules":[{"id":"=开启推送通知","action":"以后再说"},{"id":"+开启推送通知","action":"bn0"},{"id":"青少年模式","action":"=我知道了"}]}"
},
{
"201325446": "{"popup_rules":[{"id":"打开消息推送通知","action":"ivCloseAlert"},{"id":"llJbpFirstPopContent","action":"ivJbpFirstPopClose"},{"id":"把聚宝盆添加到桌面快捷方式","action":"之后再说"},{"id":"apperience_enter","action":"apperience_close"},{"id":"rlRedPop","action":"ivClose"},{"id":"iv_pop_content","action":"iv_pop_close"},{"id":"ivPromotion","action":"btnClose"}]}"
},
{
"-527086868": "{"popup_rules":[{"id":"gift_img","action":"gift_close"},{"id":"打开系统通知","action":"iv_close"}]}"
},
{
"-524659007": "{"popup_rules":[{"id":"不感兴趣","action":"不感兴趣","times":5}]}"
},
{
"-328022007": "{"popup_rules":[{"id":"广告","action":"跳过"},{"id":"main_ad_alert","action":"main_ad_alert_close"},{"id":"slideshowView","action":"ivClose"}]}"
},
{
"1174097286": "{"popup_rules":[{"id":"icon_cart_egg_close","action":"icon_cart_egg_close"},{"id":"弹窗","action":"关闭按钮"},{"id":"发现新版本","action":"取消"}]}"
},
{
"2029054607": "{"popup_rules":[{"id":"tt_splash_ad_logo","action":"tt_splash_skip_btn"}]}"
},
{
"1519628819": "{"popup_rules":[{"id":"tt_splash_ad_logo","action":"tt_splash_skip_btn"}]}"
},
{
"313184810": "{"popup_rules":[{"id":"检测到更新","action":"以后再说"},{"id":"青少年模式","action":"关闭"},{"id":"朋友推荐","action":"close"},{"id":"隐藏","action":"h7e"},{"id":"开启朋友通知","action":"暂不"},{"id":"朋友推荐 标题","action":"qpb"},{"id":"及时获得消息提醒","action":"暂不开启"},{"id":"想访问你的通讯录","action":"拒绝"}]}"
},
{
"-1667428321": "{"popup_rules":[{"id":"发现新版本","action":"忽略"},{"id":"byr","action":"byr","times":5},{"id":"page-title","action":"avq"},],"click_way_popup":1}"
},
{
"195210534": "{"popup_rules":[{"id":"升级版本","action":"关闭"},{"id":"收到一个现金红包","action":"关闭"}]}"
},
{
"-1220851267": "{"popup_rules":[{"id":"layout_young_tips","action":"ok_btn"},{"id":"授权地理位置权限","action":"btn_cancel"}]}"
},
{
"125486076": "{"popup_rules":[{"id":"有新版本啦","action":"imageView_close"}]}"
},
{
"-1991835185": "{"popup_rules":[{"id":"开启通知","action":"不允许"},{"id":"ad_image","action":"ad_close"}]}"
},
{
"-973170826": "{"popup_rules":[{"id":"广告","action":"feedbackIcon"},{"id":"dislike&feedbackBtn","action":"不感兴趣"},{"id":"isdismatch&isduplicate&isbadad","action":"与我无关"}]}"
},
{
"167193980": "{"popup_rules":[{"id":"javascript:;","action":"javascript:;"},{"id":"定位服务授权","action":"取消"},{"id":"64c8cbcb30036","action":"close"}]}"
},
{
"-1239952740": "{"popup_rules":[{"id":"为什么不希望看到这条推广","action":"不感兴趣"}]}"
},
{
"2138257400": "{"popup_rules":[{"id":"打开消息通知","action":"close_icon"}]}"
},
{
"1511151769": "{"popup_rules":[{"id":"获取消息通知","action":"暂不开启"}]}"
},
{
"-1491765371": "{"popup_rules":[{"id":"开启青少年模式","action":"知道了"}]}"
},
{
"1970409442": "{"popup_rules":[{"id":"监护人同意","action":"已满14岁"}]}"
},
{
"-358087111": "{"popup_rules":[{"id":"push_on_notify_bar","action":"push_on_notify_delete"}]}"
},
{
"-173873869": "{"popup_rules":[{"id":"iv_tg_ad","action":"iv_tg_ad"},{"id":"btn_open_notification","action":"iv_close_notification_guide"},{"id":"forum_ad_imageview","action":"iv_close_community_ad"},{"id":"iv_recommend_ad_image","action":"iv_close_ad"}]}"
},
{
"-1665025453": "{"popup_rules":[{"id":"为了安全着想,请开启安全守护","action":"放弃"},{"id":"准备中","action":"准备中","times":0},{"id":"检测中","action":"检测中","times":0},{"id":"继续更新","action":"继续更新","times":3},{"id":"继续安装","action":"继续安装","times":3},{"id":"继续","action":"继续","times":3},{"id":"安装中","action":"安装中","times":0},{"id":"完成","action":"完成"}],"unite_popup_rules":true,"ltt_service":true}"
},
{
"-2096096381": "{"popup_rules":[{"id":"pop_advertisement_content","action":"iv_close"}]}"
},
{
"-1478231696": "{"popup_rules":[{"id":"iv_peer_exchange_fhr","action":"iv_peer_exchange_close_fhr"},{"id":"打开系统通知","action":"bt_tip_close"}]}"
},
{
"588474247": "{"popup_rules":[{"id":"更新","action":"取消"}]}"
},
{
"-1206397310": "{"popup_rules":[{"id":"青少年模式","action":"=我知道了"},{"id":"ivFloatAd","action":"ivAdClose"},{"id":"layout_ad_layout","action":"native_ad_close"},{"id":"ad_flag_source_layout","action":"iv_close"},{"id":"native_ad_image","action":"native_ad_close"},{"id":"native_ad_title","action":"native_ad_close"}]}"
},
{
"199342455": "{"popup_rules":[{"id":"开启推送通知","action":"iv_close"},{"id":"tv_nps_title","action":"img_nps_close"}]}"
},
{
"-766051647": "{"popup_rules":[{"id":"发现新版本","action":"放弃更新"}]}"
},
{
"-1527971724": "{"popup_rules":[{"id":"iv_notification_tip_icon","action":"cv_cancel_notification_tip"},{"id":"cl_top","action":"bt_close"}]}"
},
{
"1600359417": "{"popup_rules":[{"id":"新版本","action":"稍后更新"}]}"
},
{
"992705457": "{"popup_rules":[{"id":"青少年模式","action":"知道了"},{"id":"开启消息通知","action":"暂不开启"},{"id":"不要错过重要消息,试试个性化管理吧","action":"bce"}]}"
},
{
"1979515232": "{"popup_rules":[{"id":"updateVersionTitle","action":"md_dialog_cm_close_btn"},{"id":"访问您的位置","action":"取消"}]}"
},
{
"-1869705199": "{"popup_rules":[{"id":"删除所有广告","action":"跳过"},{"id":"青少年模式","action":"我知道了"}],"click_way_popup":1}"
},
{
"-1902185409": "{"popup_rules":[{"id":"首次成功发布沸点","action":"iv_close"}]}"
},
{
"-1567553486": "{"popup_rules":[{"id":"ux_program_title","action":"confirm_cancel"},{"id":"GuideModalConfirmBtn","action":"GLOBAL_ACTION_BACK"},{"id":"开启通知","action":"close"}]}"
},
{
"818881643": "{"popup_rules":[{"id":"=广告","action":"跳过"}]}"
},
{
"863298512": "{"popup_rules":[{"id":"threeImageBaPing","action":"close_ba_ping"},{"id":"imageBaPingFullScreen","action":"closeBaPingFull"},{"id":"baPing_small_icon","action":"baPing_small_close"}]}"
},
{
"-1877153607": "{"popup_rules":[{"id":"给您发送通知","action":"不接收"}]}"
},
{
"616434203": "{"popup_rules":[{"id":"“快影”想给您发送通知","action":"sy"}]}"
},
{
"-357699061": "{"popup_rules":[{"id":"青少年模式","action":"知道了"}]}"
},
{
"-243402277": "{"popup_rules":[{"id":"iv_activities_banner","action":"iv_close"}]}"
},
{
"1032792361": "{"popup_rules":[{"id":"新人专属月卡","action":"GLOBAL_ACTION_BACK"}]}"
},
{
"1047154881": "{"popup_rules":[{"id":"确认加购","action":"GLOBAL_ACTION_BACK"}]}"
},
{
"270344886": "{"popup_rules":[{"id":"iv_poster","action":"iv_close"}]}"
},
{
"991394745": "{"popup_rules":[{"id":"home_ad_dialog_pager","action":"iv_home_ad_close"},{"id":"homeLocationPermissionTipsTitle","action":"homeLocationPermissionClose"},{"id":"开启消息通知","action":"close"}]}"
},
{
"-2003752385": "{"popup_rules":[{"id":"青少年模式","action":"ok_tv"},{"id":"bg_iv","action":"close_iv"},{"id":"notification_open_lay","action":"close_lay_btn"}]}"
},
{
"1091754941": "{"popup_rules":[{"id":"新人专属福利","action":"iv_close"},{"id":"hbv","action":"iv_close"},{"id":"开启推送通知","action":"iv_cancel"}]}"
},
{
"-1652150487": "{"popup_rules":[{"id":"检测到更新","action":"以后再说"},{"id":"青少年模式","action":"关闭"},{"id":"收到现金红包","action":"bci"},{"id":"授权提示","action":"我再想想"},{"id":"授权通讯录","action":"拒绝"},{"id":"资料完善度&继续完善","action":"关闭"},{"id":"朋友推荐","action":"关闭"},{"id":"简介支持@功能,快来试试吧","action":"关闭"}]}"
},
{
"-7542465": "{"popup_rules":[{"id":"advert_creative_head_title_v3","action":"advert_creative_head_img_text_layout_close_btn_v3"}]}"
},
{
"-1065232334": "{"popup_rules":[{"id":"iv_opera","action":"iiv_close"},{"id":"mantine-r4-body","action":"upload"}]}"
},
{
"662377423": "{"popup_rules":[{"id":"ll_book_recommend","action":"gift_close"},{"id":"gift_container","action":"gift_close"},{"id":"daily_container","action":"daily_close"}]}"
},
{
"1062801388": "{"popup_rules":[{"id":"iv_bg","action":"iv_close"},{"id":"iv_ad","action":"tv_close_ad"}]}"
},
{
"2009078134": "{"popup_rules":[{"id":"新用户限时特惠","action":"知道了"}]}"
},
{
"652719697": "{"popup_rules":[{"id":"layoutOpenVip","action":"ivVipBannerClose"}]}"
},
{
"1590102142": "{"popup_rules":[{"id":"极速版小助理&求关注","action":"拒绝"},{"id":"item_timeline_ad_sign","action":"关闭广告"},{"id":"屏蔽信息流广告","action":"不感兴趣"}]}"
},
{
"-1520738335": "{"popup_rules":[{"id":"暂不更新","action":"update_title_tv"}]}"
},
{
"378881071": "{"popup_rules":[{"id":"懂车帝有更新啦","action":"以后再说"}]}"
},
{
"1429484426": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"},{"id":"正在试听,完整播放需要开通VIP","action":"GLOBAL_ACTION_BACK"}]}"
},
{
"270694045": "{"popup_rules":[{"id":"开启消息通知","action":"GLOBAL_ACTION_BACK"}]}"
},
{
"648308836": "{"popup_rules":[{"id":"升级体验","action":"取消"},{"id":"home_float_close","action":"home_float_close"},{"id":"不再提醒","action":"tv_never"}]}"
},
{
"-1930444755": "{"popup_rules":[{"id":"riv_poplayer_image","action":"iv_close_poplayer_image"}]}"
},
{
"1488133239": "{"popup_rules":[{"id":"开始发图","action":"GLOBAL_ACTION_BACK"},{"id":"签到成功","action":"close"}]}"
},
{
"1788138577": "{"popup_rules":[{"id":"关注服务号","action":"close_btn"}]}"
},
{
"232580377": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"},{"id":"scratch_show_view","action":"scratch_close_float"},{"id":"push_content","action":"push_remind_close"},{"id":"tvVersion","action":"not_update"},{"id":"swiper_list","action":"GLOBAL_ACTION_BACK"},{"id":"tv_sign_in","action":"iv_sign_in_close"},{"id":"image_avatar","action":"image_close"},{"id":"iv_tag_ad","action":"tedium"},{"id":"feedback_general_text","action":"不喜欢广告主"}]}"
},
{
"752555548": "{"popup_rules":[{"id":"的广告","action":"×"},{"id":"zhConstraintLayout","action":"dismiss"}]}"
},
{
"238075641": "{"popup_rules":[{"id":"iv_image","action":"close"},{"id":"iv_listitem_image","action":"iv_list_item_dislike"},{"id":"不感兴趣&无法关闭&举报广告","action":"不感兴趣"},{"id":"look_reward","action":"reject"}]}"
},
{
"953551389": "{"popup_rules":[{"id":"使用您的位置","action":"暂不"}]}"
},
{
"1388849156": "{"popup_rules":[{"id":"V&立即升级","action":"arg"},{"id":"授权微信通知","action":"arg"},{"id":"会员随机现金奖励","action":"狠心放弃"},{"id":"添加智行桌面小组件","action":"arg"},{"id":"手机定位服务或定位权限未开启","action":"arg"}]}"
},
{
"-662871885": "{"popup_rules":[{"id":"更新提示","action":"取消"}]}"
},
{
"-822811590": "{"popup_rules":[{"id":"item_channel_item_title","action":"item_channel_item_close","times":5},{"id":"item_channel_item_image_layout","action":"item_channel_item_close","times":5}]}"
},
{
"-1979924692": "{"popup_rules":[{"id":"tv_join","action":"iv_cancle"}]}"
},
{
"644871869": "{"popup_rules":[{"id":"update_title","action":"GLOBAL_ACTION_BACK"}]}"
},
{
"947418797": "{"popup_rules":[{"id":"banner","action":"close_btn"}]}"
},
{
"-76821059": "{"popup_rules":[{"id":"开启通知服务","action":"GLOBAL_ACTION_BACK"},{"id":"明日来领&金币","action":"我知道了"}]}"
},
{
"101952197": "{"popup_rules":[{"id":"btn_open_notify","action":"not_open_notify"}]}"
},
{
"-54547863": "{"popup_rules":[{"id":"显示通知","action":"取消授权"},{"id":"ivAdv","action":"ivClose"}]}"
},
{
"1855462465": "{"popup_rules":[{"id":"浮层内部图片","action":"浮层关闭按钮"},{"id":"热区","action":"关闭按钮"},{"id":"限时福利砸中你","action":"关闭按钮"}]}"
},
{
"2016444138": "{"popup_rules":[{"id":"看视频领取&会员权益","action":"GLOBAL_ACTION_BACK"}]}"
},
{
"1380298910": "{"popup_rules":[{"id":"立即升级","action":"稍后再说"},{"id":"bud","action":"bud"}]}"
},
{
"-1717626045": "{"popup_rules":[{"id":"pay_vip_bt","action":"close_bt"},{"id":"new_user_promotion_card","action":"icon_close_button"},{"id":"完善资料领&VIP","action":"iv_close"},{"id":"vip_retain_window_iv","action":"close_button"}]}"
},
{
"-1556709909": "{"popup_rules":[{"id":"supportBt","action":"closeBt"}]}"
},
{
"-1447059102": "{"popup_rules":[{"id":"img_ads","action":"iv_close"},{"id":"float_ad_img","action":"close_float_ad_img"},{"id":"video_view","action":"iv_close"}]}"
},
{
"-1109425407": "{"popup_rules":[{"id":"发现新版本","action":"取消"}]}"
},
{
"345365066": "{"popup_rules":[{"id":"新人签到礼","action":"close_btn"},{"id":"打开通知权限","action":"再考虑下"},{"id":"百度文库&评分","action":"score_close"},{"id":"开启消息通知","action":"close_btn"},{"id":"limit-red-packet-img-title","action":"GLOBAL_ACTION_BACK"},{"id":"read_gif_iv","action":"GLOBAL_ACTION_BACK"},{"id":"act_style_content_bg_iv","action":"act_style_iv_close"}]}"
},
{
"-1255577144": "{"popup_rules":[{"id":"青少年保护","action":"okButton"},{"id":"关注&公众号","action":"残忍拒绝"}]}"
},
{
"-156204975": "{"popup_rules":[{"id":"live_update_title","action":"live_update_close_img"},{"id":"青少年守护","action":"iknow_alert_dialog_button2"},{"id":"live_ad_dialog_image","action":"live_ad_dialog_close"}]}"
},
{
"-1502821745": "{"popup_rules":[{"id":"单车&天骑&单&立即领取","action":"actionDialogClose"},{"id":"hbDialogLayout","action":"actionDialogClose"},{"id":"gENrrooPRRSKS2nmR644j","action":"gENrrooPRRSKS2nmR644j"},{"id":"resize,w_933","action":"OcAed8BaQIDrlsAAAAASUVORK5CYII="}]}"
},
{
"132785423": "{"popup_rules":[{"id":"发现新版本","action":"iv_cancel"},{"id":"开启&通知","action":"暂不开启"},{"id":"签到成功","action":"iv_close"}]}"
},
{
"195266379": "{"popup_rules":[{"id":"你收到一个现金红包","action":"blb"},{"id":"开启推送通知,及时获取互动消息","action":"关闭"},{"id":"授权抖音朋友","action":"拒绝"}]}"
},
{
"-2086095549": "{"popup_rules":[{"id":"版本更新","action":"取消"}]}"
},
{
"-1079643320": "{"popup_rules":[{"id":"抽奖机会","action":"放弃福利"},{"id":"1分钟小调研","action":"iv_cancel"},{"id":"应用内更新权限","action":"buttonDefaultNegative"}]}"
},
{
"473713875": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"},{"id":"你可能感兴趣的人","action":"关闭"}]}"
},
{
"497239884": "{"popup_rules":[{"id":"开启系统通知","action":"暂不开启"}]}"
},
{
"-945730221": "{"popup_rules":[{"id":"open_notification_button","action":"close_image_view"},{"id":"location_tip_tv","action":"location_tip_close"}]}"
},
{
"-1657078324": "{"popup_rules":[{"id":"新版本","action":"tv_update_after"}]}"
},
{
"1791072826": "{"popup_rules":[{"id":"百度网盘更新啦","action":"下次再说"},{"id":"开启消息通知","action":"dialog_cancel"},{"id":"banner_item_close","action":"banner_item_close"},{"id":"close","action":"close"},{"id":"close_clean_guide","action":"close_clean_guide"},{"id":"close_notification_tip","action":"close_notification_tip"},{"id":"iv_yike_close","action":"iv_yike_close"},{"id":"yike_guide_exit","action":"yike_guide_exit"},{"id":"cl_content","action":"iv_close"}]}"
},
{
"-528715135": "{"popup_rules":[{"id":"teenagers_desc","action":"teenagers_i_know_layout"}]}"
},
{
"-2069018544": "{"popup_rules":[{"id":"尚未设置安全问题验证","action":"iv_close"},{"id":"大学生兼职安全试炼题","action":"还是算了"}]}"
},
{
"255610818": "{"popup_rules":[{"id":"第一桶金","action":"img_close"},{"id":"line_push","action":"img_push_close"},{"id":"恭喜获得现金","action":"img_close"}]}"
},
{
"2123438483": "{"popup_rules":[{"id":"iv_coupon","action":"iv_close"}]}"
},
{
"-146860486": "{"popup_rules":[{"id":"点击成为VIP,立享高级功能","action":"close_btn"},{"id":"获取地理位置","action":"dialog_close"}]}"
},
{
"-1606001344": "{"popup_rules":[{"id":"playing_tv_redeem_title","action":"playing_ic_close"}]}"
},
{
"325847140": "{"popup_rules":[{"id":"打开推送通知","action":"不允许"}]}"
},
{
"-69877540": "{"popup_rules":[{"id":"新版本&升级","action":"GLOBAL_ACTION_BACK"},{"id":"青少年模式","action":"我知道了"},{"id":"感兴趣商品再试一件","action":"关闭弹窗"},{"id":"专属现金红包","action":"GLOBAL_ACTION_BACK"},{"id":"每日签到得现金","action":"GLOBAL_ACTION_BACK"},{"id":"满&元可用&优惠券","action":"GLOBAL_ACTION_BACK"},{"id":"你的专属&福利","action":"GLOBAL_ACTION_BACK"}]}"
},
{
"-84768776": "{"popup_rules":[{"id":"立即提现","action":"GLOBAL_ACTION_BACK"},{"id":"马上领取","action":"残忍退出"}]}"
},
{
"-612834190": "{"popup_rules":[{"id":"关闭弹框按钮","action":"关闭弹框按钮"},]}"
},
{
"-894368837": "{"popup_rules":[{"id":"开启超级保险箱","action":"close"},{"id":"touch_bottom_bar_bubble_main_title_tv","action":"touch_bottom_bar_bubble_close_iv"},{"id":"touch_dlg_main_title_tv","action":"touch_dlg_close_iv"},{"id":"touch_dlg_main_title_tv","action":"close_btn"},{"id":"移动积分别浪费,迅雷会员抢先兑","action":"放弃支付"},{"id":"老用户专属,劲爆惊喜价","action":"放弃优惠"},{"id":"xl_download_guide_tip_close","action":"xl_download_guide_tip_close"},{"id":"close-circle","action":"close-circle"},{"id":"签到成功","action":"知道了"},{"id":"tv_notification_title","action":"iv_notification_tips_close"},{"id":"立即签到","action":"iv_close"},{"id":"hermes_ad_banner_recycler","action":"hermes_ad_banner_negative"},{"id":"feedback_not_interested_text","action":"不感兴趣"}]}"
},
{
"-1781124388": "{"popup_rules":[{"id":"tv_notify_title","action":"iv_close"},{"id":"签到&天&获得&车币","action":"GLOBAL_ACTION_BACK"},{"id":"开启消息推送","action":"iv_close"}]}"
},
{
"1197124177": "{"popup_rules":[{"id":"tm_ad_page_tips_text","action":"tm_ad_page_tips_close"}]}"
},
{
"1620159901": "{"popup_rules":[{"id":"tv_chat_top_bar_notice_text","action":"iv_top_bar_close_icon"},{"id":"iv_action_icon","action":"iv_close"},{"id":"tv_submersible_recall_title","action":"关闭"}]}"
},
{
"884834226": "{"popup_rules":[{"id":"own_render_ad_icon","action":"close_render_ad"}]}"
},
{
"1589164968": "{"popup_rules":[{"id":"ivClose","action":"ivClose"}]}"
},
{
"495814814": "{"popup_rules":[{"id":"设置未成年人模式","action":"我知道了"},{"id":"imgCloseHomePageDialog","action":"imgCloseHomePageDialog"},{"id":"让我们提醒你运动","action":"暂不需要"}]}"
},
{
"1773314214": "{"popup_rules":[{"id":"权限申请","action":"取消"}]}"
},
{
"-807718193": "{"popup_rules":[{"id":"rl_banner_close","action":"rl_banner_close"},{"id":"iv_ignore","action":"iv_ignore"},{"id":"ivHomeIndexItemNearbyClose","action":"ivHomeIndexItemNearbyClose"}]}"
},
{
"-1531462240": "{"popup_rules":[{"id":"ad_icon","action":"closeAd"}]}"
},
{
"5992780": "{"popup_rules":[{"id":"支持 RAR 开发","action":"放弃"}]}"
},
{
"1868020298": "{"popup_rules":[{"id":"upgrade_title","action":"bn_cancel"},{"id":"开启&通知","action":"不要福利"},{"id":"view_pager","action":"iv_close"},{"id":"iv_logo","action":"iv_close"},{"id":"viewpager","action":"iv_home_delete"},{"id":"马上领取","action":"暂不需要"},{"id":"view_flipper","action":"close_iv"}]}"
},
{
"-2116363580": "{"popup_rules":[{"id":"立即更新","action":"negativeButton"},{"id":"内容推荐服务","action":"以后再说"}]}"
},
{
"300761806": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"},{"id":"giftPackImg","action":"closeImg"},{"id":"sign_bg","action":"signClose"}]}"
},
{
"1644138715": "{"popup_rules":[{"id":"为你推荐","action":"jkr"},{"id":"不再显示推荐电台","action":"关闭推荐"}]}"
},
{
"188162078": "{"popup_rules":[{"id":"青少年模式","action":"common_dialog_ok_btn"}]}"
},
{
"1314748790": "{"popup_rules":[{"id":"update_dlg_title","action":"tvCancel"},{"id":"开启消息通知权限","action":"暂不开启"},{"id":"index_drag_ad_iv","action":"index_drag_ad_iv_close"},{"id":"banner","action":"close_banner"}]}"
},
{
"1511326008": "{"popup_rules":[{"id":"打开通知功能","action":"取消"},{"id":"pic","action":"close"}]}"
},
{
"-1943382780": "{"popup_rules":[{"id":"新人礼包","action":"ezz"},{"id":"d6f","action":"ba3"},{"id":"测一测可赚收益","action":"ba9"},{"id":"开启推送通知","action":"dqp"},{"id":"限时补贴券","action":"ba5"},{"id":"请开启转转消息通知","action":"知道了"}]}"
},
{
"-920735187": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"},{"id":"开启推送","action":"closeBtn"},{"id":"新人专属大礼包","action":"ivClose"},{"id":"参加新人活动&免费领点币","action":"ivClose"},{"id":"ivAd","action":"ivAdClose"},{"id":"imgBKT","action":"imgClose"},{"id":"开启推送","action":"ivClose"},{"id":"签到成功&获得&章节卡碎片","action":"fClose"},{"id":"签到&天","action":"fClose"},{"id":"newAudioDialogTvTitle","action":"newAudioDialogNoPicCloseBtn"}]}"
},
{
"-360330826": "{"popup_rules":[{"id":"青少年守护计划","action":"已满14周岁"}]}"
},
{
"949069732": "{"popup_rules":[{"id":"番茄发来的红包","action":"f"},{"id":"buo","action":"buo"},{"id":"c55","action":"c56"}]}"
},
{
"810513273": "{"popup_rules":[{"id":"青少年模式","action":"确定"}]}"
},
{
"1575109845": "{"popup_rules":[{"id":"开启系统通知","action":"iv_close"}]}"
},
{
"1539906291": "{"popup_rules":[{"id":"tt_splash_ad_logo","action":"tt_splash_skip_btn"}]}"
},
{
"-862766679": "{"popup_rules":[{"id":"青少年守护计划","action":"已满14周岁"},{"id":"banner_image","action":"iv_close"},{"id":"iv_float_icon","action":"iv_float_close"},{"id":"appraise_positive_btn","action":"appraise_cancel_btn"},{"id":"popWindowPic","action":"GLOBAL_ACTION_BACK"}]}"
},
{
"-2119218027": "{"popup_rules":[{"id":"设置最右消息通知类型","action":"暂不开启"},{"id":"lottie_view","action":"iv_delete"},{"id":"+开启通知","action":"tips_close"},{"id":"账号绑定手机号可以提升安全性","action":"btn_close"}]}"
},
{
"630814885": "{"popup_rules":[{"id":"rl_center","action":"iv_close"},{"id":"iv_news","action":"iv_close"},{"id":"开启消息通知","action":"iv_tip_close"}]}"
},
{
"-759128068": "{"popup_rules":[{"id":"发现新版本","action":"ivClose"},{"id":"青少年模式","action":"我知道了"},{"id":"tvBottomFloatViewDesc","action":"ivBottomFloatViewClose"},{"id":"奖品免费包邮到家","action":"放弃领取"},{"id":"你可能感兴趣的人","action":"ivRemove","times":5},{"id":"anim_view","action":"closeIcon"},{"id":"新人超值好物","action":"ivClose"},{"id":"新人限时福利","action":"ivClose"}]}"
},
{
"-1692253156": "{"popup_rules":[{"id":"novelad_banner_ad_text","action":"novel_banner_ad_close"},{"id":"lottieAnimationView","action":"关闭弹层"}]}"
},
{
"1890818956": "{"popup_rules":[{"id":"开启新消息通知","action":"取消"}]}"
},
{
"-1637701853": "{"popup_rules":[{"id":"发现新版本","action":"以后再说"},{"id":"儿童模式","action":"知道了"},{"id":"开启重要消息通知","action":"以后再说"}]}"
},
{
"-660055062": "{"popup_rules":[{"id":"tv_authorize_dlg_title","action":"btn_close_auth_dlg"},{"id":"tv_location_title","action":"iv_location_close"}]}"
},
{
"-103524201": "{"popup_rules":[{"id":"vp_guide_add","action":"iv_close"},{"id":"开启要闻通知","action":"忽略"}]}"
},
{
"-1979578047": "{"popup_rules":[{"id":"ad_title","action":"ad_close"}]}"
},
{
"891862624": "{"popup_rules":[{"id":"青少年模式","action":"不开启"},{"id":"iv_vip_order_tip","action":"iv_vip_order_close"},{"id":"gdt_media_view","action":"gdt_btn_close"}]}"
},
{
"1661249612": "{"popup_rules":[{"id":"升级到最新版本","action":"img_close"},{"id":"查看青少年模式","action":"知道了"},{"id":"设置引力签","action":"关闭弹窗"}]}"
},
{
"157540905": "{"popup_rules":[{"id":"tt_ad_logo","action":"tt_video_ad_close_layout"},{"id":"tt_bu_title","action":"tt_bu_close"},{"id":"不感兴趣&举报广告","action":"不感兴趣"}]}"
},
{
"-1623425929": "{"popup_rules":[{"id":"更新消息","action":"vision_btn_cancel"}]}"
},
{
"1337821420": "{"popup_rules":[{"id":"请开启消息通知","action":"暂不开启"}]}"
},
{
"321803898": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"}]}"
},
{
"-1930986565": "{"popup_rules":[{"id":"新版本","action":"dialog_pic_close"}]}"
},
{
"1185278458": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"},{"id":"sdv_right_bottom_pic","action":"iv_right_bottom_close"},{"id":"sdv_big_pic","action":"iv_big_close"}]}"
},
{
"-1500338227": "{"popup_rules":[{"id":"tt_splash_ad_logo","action":"tt_splash_skip_btn"}]}"
},
{
"-1969724936": "{"popup_rules":[{"id":"发现新版本","action":"取消"}]}"
},
{
"1662102643": "{"popup_rules":[{"id":"更新提示","action":"取消"},{"id":"应用升级提醒","action":"取消"}]}"
},
{
"1546297161": "{"popup_rules":[{"id":"iv_right_bottom_ad","action":"iv_close"}]}"
},
{
"1000776385": "{"popup_rules":[{"id":"update_cancel","action":"update_cancel"},{"id":"iv_body","action":"iv_close"},{"id":"img_ad","action":"img_ad_close"}]}"
},
{
"1667762191": "{"popup_rules":[{"id":"日&必得&金币","action":"GLOBAL_ACTION_BACK"}]}"
},
{
"650999717": "{"popup_rules":[{"id":"使用此文件夹","action":"使用此文件夹"},{"id":"要允许","action":"允许"}],"unite_popup_rules":true,"ltt_service":true}"
},
{
"-921040269": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"}]}"
},
{
"-1635328017": "{"popup_rules":[{"id":"马上升级","action":"不再提醒"},{"id":"抢先体验&不再提醒","action":"不再提醒"},{"id":"关闭,按钮","action":"关闭,按钮"},{"id":"关闭新特性弹窗","action":"关闭新特性弹窗"},{"id":"关闭按钮","action":"关闭按钮"}]}"
},
{
"-379148275": "{"popup_rules":[{"id":"=跳过","action":"=跳过"}],"click_way_popup":1}"
},
{
"-1703768290": "{"popup_rules":[{"id":"tv_teenager_content","action":"btn_teenager_i_know"},{"id":"新用户专属奖励","action":"iv_new_player_dialog_close"},{"id":"立即签到","action":"iv_close"},{"id":"开启系统通知","action":"close"}]}"
},
{
"-744842507": "{"popup_rules":[{"id":"ad_container","action":"btn_close"},{"id":"fl_container","action":"iv_delete"}]}"
},
{
"-1731486278": "{"popup_rules":[{"id":"iv_ad","action":"close"},{"id":"邀您体验新版本","action":"残忍拒绝"},{"id":"允许获取位置信息","action":"取消"},{"id":"iv_notification_reminder_dialog","action":"iv_notification_reminder_dialog_close"},{"id":"iv_switch","action":"iv_skip"},{"id":"开启定位服务","action":"暂时不了"}]}"
},
{
"-103532384": "{"popup_rules":[{"id":"允许&发送通知","action":"以后再说"}]}"
},
{
"-1357050264": "{"popup_rules":[{"id":"定位服务&开启","action":"关闭"},{"id":"活动图片","action":"关闭"}]}"
},
{
"-918490570": "{"popup_rules":[{"id":"tv_upgrade_title","action":"iv_upgrade_btn_ignore"},{"id":"广告弹窗","action":"关闭弹窗"},{"id":"共享&广告标识","action":"不允许"},{"id":"开启通知提醒","action":"im_feed_tip_close"}]}"
},
{
"1889695195": "{"popup_rules":[{"id":"授权&位置信息","action":"关闭"}]}"
},
{
"-191341086": "{"popup_rules":[{"id":"有新版本","action":"暂不升级"},{"id":"以后再说","action":"以后再说"}]}"
},
{
"-1185078240": "{"popup_rules":[{"id":"收到&现金红包","action":"GLOBAL_ACTION_BACK"}]}"
},
{
"1836227312": "{"popup_rules":[{"id":"iv_ads","action":"iv_close"}]}"
},
{
"1013943789": "{"popup_rules":[{"id":"新人&见面礼","action":"GLOBAL_ACTION_BACK"}]}"
},
{
"1516206044": "{"popup_rules":[{"id":"iv_head","action":"返回首页"},{"id":"允许地理位置权限","action":"不允许"}]}"
},
{
"-30315083": "{"popup_rules":[{"id":"有新版本","action":"取消"}]}"
},
{
"744792033": "{"popup_rules":[{"id":"cancel_update","action":"cancel_update"},{"id":"yellow_banner_close","action":"yellow_banner_close"},{"id":"close_btn","action":"close_btn"},{"id":"operational_activities_content_close","action":"operational_activities_content_close"}]}"
},
{
"354525348": "{"popup_rules":[{"id":"立即支付 解锁全部功能","action":"下次再说"}]}"
},
{
"-530247198": "{"popup_rules":[{"id":"=跳过","action":"=跳过"},{"id":"gdt_ad_custom_count_down","action":"close_button"}]}"
},
{
"515982662": "{"popup_rules":[{"id":"开启定位权限","action":"locate_iv_close"},{"id":"marquee","action":"关闭"},{"id":"fortune_adv","action":"关闭"}]}"
},
{
"-245593387": "{"popup_rules":[{"id":"skip_other_info_tv","action":"skip_time_change_tv"}],"search_times_popup":5,"click_way_popup":1}"
},
{
"1966418623": "{"popup_rules":[{"id":"发现新版本","action":"暂不升级"}]}"
},
{
"2037736697": "{"popup_rules":[{"id":"ad_container","action":"splash_ad_skip"}]}"
},
{
"1983218619": "{"popup_rules":[{"id":"授权提示","action":"拒绝"},{"id":"=数字人","action":"=关闭"},{"id":"my_imageview","action":"close"}]}"
},
{
"-1898417322": "{"popup_rules":[{"id":"single_banner","action":"close"},{"id":"=广告","action":"closeGray"}]}"
},
{
"1391684449": "{"popup_rules":[{"id":"tvTip","action":"iv_guanbi"}]}"
},
{
"-103524794": "{"popup_rules":[{"id":"立即升级","action":"GLOBAL_ACTION_BACK"},{"id":"需要通知权限","action":"取消"},{"id":"关闭按钮","action":"=关闭按钮"}],"times":5}"
},
{
"-2002547408": "{"popup_rules":[{"id":"新版本升级","action":"下次提醒"},{"id":"青少年模式","action":"我知道了"},{"id":"ads_image","action":"feedback_close"},{"id":"选择理由,优化你的广告","action":"诱导点击"},{"id":"ads_label","action":"feedback_close"}]}"
},
{
"2056863498": "{"popup_rules":[{"id":"iv_content_ad","action":"iv_close_tableScreenAd"},{"id":"iv_ad","action":"iv_close"},{"id":"安装完整版日历","action":"iv_close"},{"id":"iv_pic","action":"iv_delte"}]}"
},
{
"-1161240227": "{"popup_rules":[{"id":"upgrade_title","action":"upgrade_cancel"},{"id":"lciv_img","action":"lciv_close"},{"id":"开启手机定位","action":"下次再说"}]}"
},
{
"914144235": "{"popup_rules":[{"id":"青少年模式","action":"知道了"},{"id":"bv7","action":"h1_"},{"id":"开启消息通知","action":"暂不开启"},{"id":"不&错过重要消息","action":"fmk"}]}"
},
{
"-179660078": "{"popup_rules":[{"id":"开启位置权限","action":"GLOBAL_ACTION_BACK"},{"id":"notice_title_txt","action":"notice_close_txt"}]}"
},
{
"-1865688240": "{"popup_rules":[{"id":"view_ad_title","action":"view_ad_close"}]}"
},
{
"-198019159": "{"popup_rules":[{"id":"audio_vip_skip","action":"audio_vip_close"},{"id":"item_ad_title","action":"item_ad_close"},{"id":"mAdTitle","action":"mAdClose"}]}"
},
{
"-1215205363": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"}]}"
},
{
"1254578009": "{"popup_rules":[{"id":"立即升级","action":"iv_close"},{"id":"版本升级","action":"取消"},{"id":"msgbox_popup_clear","action":"msgbox_popup_clear"}]}"
},
{
"-1895428968": "{"popup_rules":[{"id":"=跳过","action":"=跳过"}]}"
},
{
"1085732649": "{"popup_rules":[{"id":"开启通知","action":"close_btn"},{"id":"查看活动详情","action":"关闭"},{"id":"txt_streamAd_title","action":"ad_feedback_dots"},{"id":"关闭广告","action":"不感兴趣"}]}"
},
{
"1744979357": "{"popup_rules":[{"id":"rl_content","action":"iv_vip_close"},{"id":"打开社区消息通知","action":"iv_message_close"}]}"
},
{
"1884443122": "{"popup_rules":[{"id":"想要读取剪切板","action":"始终拒绝"}]}"
},
{
"-405478795": "{"popup_rules":[{"id":"ads_imageview","action":"btn_cancel"},{"id":"rlEnvelope","action":"ivCancel"}]}"
},
{
"-54120092": "{"popup_rules":[{"id":"dlg_login_guide_thanks","action":"dlg_iv_login_guide_close"}]}"
},
{
"-532693094": "{"popup_rules":[{"id":"=更新","action":"=取消"}]}"
},
{
"1937929252": "{"popup_rules":[{"id":"adv_mask_container","action":"close_btn"},{"id":"operating_activity_entrance","action":"operating_activity_close"},{"id":"开启消息通知","action":"close"},{"id":"打开消息通知","action":"close_im"}]}"
},
{
"-1046965711": "{"popup_rules":[{"id":"体验 Google Play Pass,免费试用 1 个月","action":"以后再说"}]}"
},
{
"-874484145": "{"popup_rules":[{"id":"index_pop_img","action":"img_cancel"},{"id":"打开推送通知","action":"iv_close_notification_alert"},{"id":"tv_notif","action":"iv_close"}]}"
},
{
"-1161217159": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"},{"id":"id_back_img","action":"id_close_btn"},{"id":"打开通知","action":"iv_close"}]}"
},
{
"641733616": "{"popup_rules":[{"id":"版本更新","action":"GLOBAL_ACTION_BACK"},{"id":"青少年模式","action":"我知道了"},{"id":"开启通知","action":"不再提示"},{"id":"tv_text_match","action":"iv_heart_match_x"},{"id":"定位权限","action":"拒绝"},{"id":"iv_gift_info","action":"iv_close"}]}"
},
{
"-1830100133": "{"popup_rules":[{"id":"开启消息通知","action":"再想想"},{"id":"lottery_popup_view_img","action":"lottery_popup_view_close"}]}"
},
{
"-91332804": "{"popup_rules":[{"id":"开启推送通知","action":"下次再说"}]}"
},
{
"1144086404": "{"popup_rules":[{"id":"updateVersionTitle","action":"md_dialog_cm_close_btn"},{"id":"青少年模式","action":"我知道了"}]}"
},
{
"1557402977": "{"popup_rules":[{"id":"开启消息通知权限","action":"取消"}]}"
},
{
"1994036591": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"},]}"
},
{
"1657185137": "{"popup_rules":[{"id":"新版本","action":"忽略"}]}"
},
{
"-1534473421": "{"popup_rules":[{"id":"clean_adv_image","action":"iv_close"},{"id":"iv","action":"iv_cancel"}]}"
},
{
"-2092209424": "{"popup_rules":[{"id":"青少年守护","action":"已满14岁"},{"id":"开启消息推送通知","action":"close_img"}]}"
},
{
"-1346391036": "{"popup_rules":[{"id":"mUpgradeTitle","action":"mUpgradeDialogCancel"},{"id":"青少年模式","action":"我知道了"},{"id":"开启消息推送","action":"closeIv"}]}"
},
{
"2049668591": "{"popup_rules":[{"id":"closeButtonIcon","action":"closeButtonIcon"},{"id":"推荐广告","action":"关闭"}]}"
},
{
"1651531703": "{"popup_rules":[{"id":"发现新版本","action":"img_cancle"},{"id":"dialog_teenager_tv_tip","action":"dialog_teenager_tv_iKnow"},{"id":"newVipUser_tv_tip","action":"main_newVipUser_close"},{"id":"开通消息通知","action":"iv_close"},{"id":"签到成功","action":"iv_close"},{"id":"image_ad","action":"iv_close"}]}"
},
{
"-2145732654": "{"popup_rules":[{"id":"home_ad_image","action":"home_ad_close"}]}"
},
{
"-1513662963": "{"popup_rules":[{"id":"next_points_tv","action":"close_iv"},{"id":"flow_qxb_we_chat_src_iv","action":"flow_qxb_we_chat_close_iv"}]}"
},
{
"886316827": "{"popup_rules":[{"id":"发现新版本","action":"cancel"},{"id":"开启推送通知","action":"取消"}]}"
},
{
"2138010815": "{"popup_rules":[{"id":"青少年守护模式","action":"我知道了"},{"id":"notification_tip_container","action":"close_notification_bar"},{"id":"打开推送","action":"close_btn"}]}"
},
{
"841170930": "{"popup_rules":[{"id":"iv_suspend","action":"iv_page_suspend_close"}]}"
},
{
"1659293491": "{"popup_rules":[{"id":"reminder_push_guide_tv","action":"reminder_push_guide_close"},{"id":"你可能感兴趣的人","action":"关闭"}]}"
},
{
"-1839413884": "{"popup_rules":[{"id":"interact_ad_root","action":"iv_close"}]}"
},
{
"-1892077856": "{"popup_rules":[{"id":"检测到新版本","action":"取消"},{"id":"banner_ad","action":"iv_ad_close"}]}"
},
{
"1827421494": "{"popup_rules":[{"id":"iv_ad_img","action":"iv_close"},{"id":"开启消息提醒","action":"取消"},{"id":"tv_tips_indexNoticeMsgFragment","action":"iv_tipsClose_indexNoticeMsgFragment"}]}"
},
{
"460049591": "{"popup_rules":[{"id":"开启青少年模式","action":"知道了"}]}"
},
{
"1335515207": "{"popup_rules":[{"id":"开启消息通知","action":"icft_close"}]}"
},
{
"1014178734": "{"popup_rules":[{"id":"msAdView","action":"ams_icon_single_close"}]}"
},
{
"1175536078": "{"popup_rules":[{"id":"签到领取奖励","action":"GLOBAL_ACTION_BACK"},{"id":"=下载","action":"enu"},{"id":"推送通知&开启","action":"apt"}]}"
},
{
"1620268914": "{"popup_rules":[{"id":"版本升级","action":"忽略"}]}"
},
{
"1238325805": "{"popup_rules":[{"id":"发现新版本","action":"btn_dismiss"},{"id":"青少年模式","action":"iv_close"},{"id":"iv_close_icon","action":"iv_close_icon"}]}"
},
{
"265439280": "{"popup_rules":[{"id":"青少年守护","action":"已满18周岁"},{"id":"打开通知","action":"取消"}]}"
},
{
"-1367717479": "{"popup_rules":[{"id":"开启通知","action":"close_tip_btn"}]}"
},
{
"-629891177": "{"popup_rules":[{"id":"开启位置权限","action":"取消"}]}"
},
{
"1056984291": "{"popup_rules":[{"id":"update_content","action":"image_cancel"},{"id":"iv_notice","action":"ib_close"}]}"
},
{
"978047406": "{"popup_rules":[{"id":"+开启定位","action":"qmapapi_guide_close"},{"id":"h_explore_rn|NewPopUp|DrawLotteryPopup|Touchable","action":"h_explore_rn|NewPopUp|DrawLotteryPopup|Touchable"}]}"
},
{
"-248012079": "{"popup_rules":[{"id":"tv_version","action":"下次再说"},{"id":"开启通知","action":"iv_close"},{"id":"打开消息推送","action":"ivClose"}]}"
},
{
"-396646979": "{"popup_rules":[{"id":"umeng_update_id_ok","action":"umeng_update_id_cancel"},{"id":"青少年模式","action":"我知道了"}]}"
},
{
"2128193854": "{"popup_rules":[{"id":"青少年模式","action":"知道了"}]}"
},
{
"1659335438": "{"popup_rules":[{"id":"iv_drop_cnl_close","action":"iv_drop_cnl_close"},{"id":"共享文件夹","action":"稍后再说"}]}"
},
{
"-1163495604": "{"popup_rules":[{"id":"打开通知","action":"new_user_download_right_view"}]}"
},
{
"1751022005": "{"popup_rules":[{"id":"系统公告","action":"确定"}]}"
},
{
"1268902986": "{"popup_rules":[{"id":"系统位置服务未开启","action":"iv_image_close"}]}"
},
{
"-506597855": "{"popup_rules":[{"id":"版本更新","action":"取消"}]}"
},
{
"-133843480": "{"popup_rules":[{"id":"clean_adv_image","action":"iv_close"},{"id":"main_image_600x400","action":"close"},{"id":"确定放弃VIP会员","action":"close"}]}"
},
{
"559984781": "{"popup_rules":[{"id":"iv_delete","action":"iv_delete"}]}"
},
{
"1305029671": "{"popup_rules":[{"id":"版本更新","action":"关闭"},{"id":"签到成功","action":"关闭"}]}"
},
{
"-1846921724": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"},{"id":"iv_dialog_main_activity_bg","action":"iv_dialog_main_activity_close"},{"id":"radiance","action":"iv_dialog_live_room_gift_bag_close"}]}"
},
{
"-2061428528": "{"popup_rules":[{"id":"rl_ad_container","action":"iv_clear"}]}"
},
{
"93910113": "{"popup_rules":[{"id":"layout_gift","action":"iv_close"},{"id":"iv_notify","action":"iv_close"}]}"
},
{
"-1670877294": "{"popup_rules":[{"id":"新版试用","action":"取消"},{"id":"ad_download","action":"ad_not_interest"},{"id":"不感兴趣&投诉","action":"不感兴趣"},{"id":"push_tip_title","action":"close_tip"},{"id":"ad_header_new","action":"menu_item"}]}"
},
{
"1076661718": "{"popup_rules":[{"id":"版本更新","action":"暂不更新"}]}"
},
{
"555434215": "{"popup_rules":[{"id":"权限申请说明","action":"不同意"},{"id":"权限申请说明","action":"我知道了"},{"id":"img_bg_header","action":"img_close"},{"id":"txt_client_top_location_guide_title","action":"client_top_location_guide_cancel"},{"id":"contact_post_guide_layout_contact","action":"contact_post_guide_img_close"},{"id":"开启消息通知","action":"✕"},{"id":"ll_wechat_bind_layout","action":"iv_wechat_bind_close"},{"id":"img_bg","action":"img_close"},{"id":"完善个人信息","action":"iv_dtl_dialog_close"}]}"
},
{
"-1048697214": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"},{"id":"viewClose","action":"viewClose"},{"id":"fl_video","action":"iv_highlight_close"}]}"
},
{
"1358411530": "{"popup_rules":[{"id":"青少年模式","action":"我知道了"},{"id":"新人福利","action":"close"},{"id":"打开推送提醒","action":"关闭"}]}"
},
{
"1309104121": "{"popup_rules":[{"id":"立即升级","action":"关闭"}]}"
},
{
"-34617839": "{"popup_rules":[{"id":"开启定位权限","action":"img_close"},{"id":"想获取您的位置信息","action":"不允许"}]}"
}
]
小飞象机场优惠码:xfx1212
https://github.com/jierry1980/-
https://www.123pan.com/s/LuN5Vv-74Y1h.html 提取码:4fTF
推荐两款新手小白科学上网工具,11月份比较好用,工具来自网络 随时都有可能失效!
// version base on commit 43fad05dcdae3b723c53c226f8181fc5bd47223e, time is 2023-06-22 15:20:02 UTC. // @ts-ignore import { connect } from 'cloudflare:sockets'; // How to generate your own UUID: // [Windows] Press "Win + R", input cmd and run: Powershell -NoExit -Command "[guid]::NewGuid()" let userID = 'd342d11e-d424-4583-b36e-524ab1f0afa4'; const proxyIPs = ['cdn-all.xn--b6gac.eu.org', 'cdn.xn--b6gac.eu.org', 'cdn-b100.xn--b6gac.eu.org', 'edgetunnel.anycast.eu.org', 'cdn.anycast.eu.org']; let proxyIP = proxyIPs[Math.floor(Math.random() * proxyIPs.length)]; let dohURL = 'https://sky.rethinkdns.com/1:-Pf_____9_8A_AMAIgE8kMABVDDmKOHTAKg='; // https://cloudflare-dns.com/dns-query or https://dns.google/dns-query // v2board api environment variables (optional) deprecated, please use planetscale.com instead if (!isValidUUID(userID)) { throw new Error('uuid is invalid'); } export default { /** * @param {import("@cloudflare/workers-types").Request} request * @param {{UUID: string, PROXYIP: string, DNS_RESOLVER_URL: string, NODE_ID: int, API_HOST: string, API_TOKEN: string}} env * @param {import("@cloudflare/workers-types").ExecutionContext} ctx * @returns {Promise} / async fetch(request, env, ctx) { // uuid_validator(request); try { userID = env.UUID || userID; proxyIP = env.PROXYIP || proxyIP; dohURL = env.DNS_RESOLVER_URL || dohURL; let userID_Path = userID; if (userID.includes(',')) { userID_Path = userID.split(',')[0]; } const upgradeHeader = request.headers.get('Upgrade'); if (!upgradeHeader || upgradeHeader !== 'websocket') { const url = new URL(request.url); switch (url.pathname) { case '/cf': return new Response(JSON.stringify(request.cf, null, 4), { status: 200, headers: { "Content-Type": "application/json;charset=utf-8", }, }); case /${userID_Path}
: { const vlessConfig = getVLESSConfig(userID, request.headers.get('Host')); return new Response(${vlessConfig}
, { status: 200, headers: { "Content-Type": "text/html; charset=utf-8", } }); } case /sub/${userID_Path}
: { const url = new URL(request.url); const searchParams = url.searchParams; let vlessConfig = createVLESSSub(userID, request.headers.get('Host')); // If 'format' query param equals to 'clash', convert config to base64 if (searchParams.get('format') === 'clash') { vlessConfig = btoa(vlessConfig); } // Construct and return response object return new Response(vlessConfig, { status: 200, headers: { "Content-Type": "text/plain;charset=utf-8", } }); } case /bestip/${userID_Path}
: { const bestiplink = https://sub.xf.free.hr/auto?host=${request.headers.get('Host')}&uuid=${userID_Path}
const reqHeaders = new Headers(request.headers); const bestipresponse = await fetch(bestiplink, { redirect: 'manual', headers: reqHeaders, }); // Construct and return response object return bestipresponse } default: // return new Response('Not found', { status: 404 }); // For any other path, reverse proxy to 'www.fmprc.gov.cn' and return the original response, caching it in the process const hostnames = ['www.fmprc.gov.cn', 'www.xuexi.cn', 'www.gov.cn', 'mail.gov.cn', 'www.mofcom.gov.cn', 'www.gfbzb.gov.cn', 'www.miit.gov.cn', 'www.12377.cn']; url.hostname = hostnames[Math.floor(Math.random() * hostnames.length)]; url.protocol = 'https:'; const newHeaders = new Headers(request.headers); newHeaders.set('cf-connecting-ip', newHeaders.get('x-forwarded-for') || newHeaders.get('cf-connecting-ip')); newHeaders.set('x-forwarded-for', newHeaders.get('cf-connecting-ip')); newHeaders.set('x-real-ip', newHeaders.get('cf-connecting-ip')); newHeaders.set('referer', 'https://www.google.com/q=edtunnel'); request = new Request(url, { method: request.method, headers: newHeaders, body: request.body, redirect: request.redirect, }); const cache = caches.default; let response = await cache.match(request); if (!response) { try { response = await fetch(request, { redirect: 'manual' }); } catch (err) { url.protocol = 'http:'; url.hostname = hostnames[Math.floor(Math.random() * hostnames.length)]; request = new Request(url, { method: request.method, headers: newHeaders, body: request.body, redirect: request.redirect, }); response = await fetch(request, { redirect: 'manual' }); } const cloneResponse = response.clone(); ctx.waitUntil(cache.put(request, cloneResponse)); } return response; } } else { return await vlessOverWSHandler(request); } } catch (err) { /* @type {Error} / let e = err; return new Response(e.toString()); } }, }; export async function uuid_validator(request) { const hostname = request.headers.get('Host'); const currentDate = new Date(); const subdomain = hostname.split('.')[0]; const year = currentDate.getFullYear(); const month = String(currentDate.getMonth() + 1).padStart(2, '0'); const day = String(currentDate.getDate()).padStart(2, '0'); const formattedDate = ${year}-${month}-${day}
; // const daliy_sub = formattedDate + subdomain const hashHex = await hashHex_f(subdomain); // subdomain string contains timestamps utc and uuid string TODO. console.log(hashHex, subdomain, formattedDate); } export async function hashHex_f(string) { const encoder = new TextEncoder(); const data = encoder.encode(string); const hashBuffer = await crypto.subtle.digest('SHA-256', data); const hashArray = Array.from(new Uint8Array(hashBuffer)); const hashHex = hashArray.map(byte => byte.toString(16).padStart(2, '0')).join(''); return hashHex; } /* * Handles VLESS over WebSocket requests by creating a WebSocket pair, accepting the WebSocket connection, and processing the VLESS header. * @param {import("@cloudflare/workers-types").Request} request The incoming request object. * @returns {Promise} A Promise that resolves to a WebSocket response object. / async function vlessOverWSHandler(request) { const webSocketPair = new WebSocketPair(); const [client, webSocket] = Object.values(webSocketPair); webSocket.accept(); let address = ''; let portWithRandomLog = ''; let currentDate = new Date(); const log = (/* @type {string} / info, /* @type {string | undefined} / event) => { console.log([${currentDate} ${address}:${portWithRandomLog}] ${info}
, event || ''); }; const earlyDataHeader = request.headers.get('sec-websocket-protocol') || ''; const readableWebSocketStream = makeReadableWebSocketStream(webSocket, earlyDataHeader, log); /* @type {{ value: import("@cloudflare/workers-types").Socket | null}}/ let remoteSocketWapper = { value: null, }; let udpStreamWrite = null; let isDns = false; // ws --> remote readableWebSocketStream.pipeTo(new WritableStream({ async write(chunk, controller) { if (isDns && udpStreamWrite) { return udpStreamWrite(chunk); } if (remoteSocketWapper.value) { const writer = remoteSocketWapper.value.writable.getWriter() await writer.write(chunk); writer.releaseLock(); return; } const { hasError, message, portRemote = 443, addressRemote = '', rawDataIndex, vlessVersion = new Uint8Array([0, 0]), isUDP, } = processVlessHeader(chunk, userID); address = addressRemote; portWithRandomLog = ${portRemote} ${isUDP ? 'udp' : 'tcp'}
; if (hasError) { // controller.error(message); throw new Error(message); // cf seems has bug, controller.error will not end stream // webSocket.close(1000, message); return; } // If UDP and not DNS port, close it if (isUDP && portRemote !== 53) { throw new Error('UDP proxy only enabled for DNS which is port 53'); // cf seems has bug, controller.error will not end stream } if (isUDP && portRemote === 53) { isDns = true; } // ["version", "附加信息长度 N"] const vlessResponseHeader = new Uint8Array([vlessVersion[0], 0]); const rawClientData = chunk.slice(rawDataIndex); // TODO: support udp here when cf runtime has udp support if (isDns) { const { write } = await handleUDPOutBound(webSocket, vlessResponseHeader, log); udpStreamWrite = write; udpStreamWrite(rawClientData); return; } handleTCPOutBound(remoteSocketWapper, addressRemote, portRemote, rawClientData, webSocket, vlessResponseHeader, log); }, close() { log(readableWebSocketStream is close
); }, abort(reason) { log(readableWebSocketStream is abort
, JSON.stringify(reason)); }, })).catch((err) => { log('readableWebSocketStream pipeTo error', err); }); return new Response(null, { status: 101, webSocket: client, }); } /** * Handles outbound TCP connections. * * @param {any} remoteSocket * @param {string} addressRemote The remote address to connect to. * @param {number} portRemote The remote port to connect to. * @param {Uint8Array} rawClientData The raw client data to write. * @param {import("@cloudflare/workers-types").WebSocket} webSocket The WebSocket to pass the remote socket to. * @param {Uint8Array} vlessResponseHeader The VLESS response header. * @param {function} log The logging function. * @returns {Promise} The remote socket. / async function handleTCPOutBound(remoteSocket, addressRemote, portRemote, rawClientData, webSocket, vlessResponseHeader, log,) { /* * Connects to a given address and port and writes data to the socket. * @param {string} address The address to connect to. * @param {number} port The port to connect to. * @returns {Promise<import("@cloudflare/workers-types").Socket>} A Promise that resolves to the connected socket. / async function connectAndWrite(address, port) { /* @type {import("@cloudflare/workers-types").Socket} / const tcpSocket = connect({ hostname: address, port: port, }); remoteSocket.value = tcpSocket; log(connected to ${address}:${port}
); const writer = tcpSocket.writable.getWriter(); await writer.write(rawClientData); // first write, nomal is tls client hello writer.releaseLock(); return tcpSocket; } /* * Retries connecting to the remote address and port if the Cloudflare socket has no incoming data. * @returns {Promise} A Promise that resolves when the retry is complete. / async function retry() { const tcpSocket = await connectAndWrite(proxyIP || addressRemote, portRemote) tcpSocket.closed.catch(error => { console.log('retry tcpSocket closed error', error); }).finally(() => { safeCloseWebSocket(webSocket); }) remoteSocketToWS(tcpSocket, webSocket, vlessResponseHeader, null, log); } const tcpSocket = await connectAndWrite(addressRemote, portRemote); // when remoteSocket is ready, pass to websocket // remote--> ws remoteSocketToWS(tcpSocket, webSocket, vlessResponseHeader, retry, log); } /* * Creates a readable stream from a WebSocket server, allowing for data to be read from the WebSocket. * @param {import("@cloudflare/workers-types").WebSocket} webSocketServer The WebSocket server to create the readable stream from. * @param {string} earlyDataHeader The header containing early data for WebSocket 0-RTT. * @param {(info: string)=> void} log The logging function. * @returns {ReadableStream} A readable stream that can be used to read data from the WebSocket. / function makeReadableWebSocketStream(webSocketServer, earlyDataHeader, log) { let readableStreamCancel = false; const stream = new ReadableStream({ start(controller) { webSocketServer.addEventListener('message', (event) => { const message = event.data; controller.enqueue(message); }); webSocketServer.addEventListener('close', () => { safeCloseWebSocket(webSocketServer); controller.close(); }); webSocketServer.addEventListener('error', (err) => { log('webSocketServer has error'); controller.error(err); }); const { earlyData, error } = base64ToArrayBuffer(earlyDataHeader); if (error) { controller.error(error); } else if (earlyData) { controller.enqueue(earlyData); } }, pull(controller) { // if ws can stop read if stream is full, we can implement backpressure // https://streams.spec.whatwg.org/#example-rs-push-backpressure }, cancel(reason) { log(ReadableStream was canceled, due to ${reason}
) readableStreamCancel = true; safeCloseWebSocket(webSocketServer); } }); return stream; } // https://xtls.github.io/development/protocols/vless.html // https://github.com/zizifn/excalidraw-backup/blob/main/v2ray-protocol.excalidraw /* * Processes the VLESS header buffer and returns an object with the relevant information. * @param {ArrayBuffer} vlessBuffer The VLESS header buffer to process. * @param {string} userID The user ID to validate against the UUID in the VLESS header. * @returns {{ * hasError: boolean, * message?: string, * addressRemote?: string, * addressType?: number, * portRemote?: number, * rawDataIndex?: number, * vlessVersion?: Uint8Array, * isUDP?: boolean * }} An object with the relevant information extracted from the VLESS header buffer. / function processVlessHeader(vlessBuffer, userID) { if (vlessBuffer.byteLength < 24) { return { hasError: true, message: 'invalid data', }; } const version = new Uint8Array(vlessBuffer.slice(0, 1)); let isValidUser = false; let isUDP = false; const slicedBuffer = new Uint8Array(vlessBuffer.slice(1, 17)); const slicedBufferString = stringify(slicedBuffer); // check if userID is valid uuid or uuids split by , and contains userID in it otherwise return error message to console const uuids = userID.includes(',') ? userID.split(",") : [userID]; // uuid_validator(hostName, slicedBufferString); // isValidUser = uuids.some(userUuid => slicedBufferString === userUuid.trim()); isValidUser = uuids.some(userUuid => slicedBufferString === userUuid.trim()) || uuids.length === 1 && slicedBufferString === uuids[0].trim(); console.log(userID: ${slicedBufferString}
); if (!isValidUser) { return { hasError: true, message: 'invalid user', }; } const optLength = new Uint8Array(vlessBuffer.slice(17, 18))[0]; //skip opt for now const command = new Uint8Array( vlessBuffer.slice(18 + optLength, 18 + optLength + 1) )[0]; // 0x01 TCP // 0x02 UDP // 0x03 MUX if (command === 1) { isUDP = false; } else if (command === 2) { isUDP = true; } else { return { hasError: true, message: command ${command} is not support, command 01-tcp,02-udp,03-mux
, }; } const portIndex = 18 + optLength + 1; const portBuffer = vlessBuffer.slice(portIndex, portIndex + 2); // port is big-Endian in raw data etc 80 == 0x005d const portRemote = new DataView(portBuffer).getUint16(0); let addressIndex = portIndex + 2; const addressBuffer = new Uint8Array( vlessBuffer.slice(addressIndex, addressIndex + 1) ); // 1--> ipv4 addressLength =4 // 2--> domain name addressLength=addressBuffer[1] // 3--> ipv6 addressLength =16 const addressType = addressBuffer[0]; let addressLength = 0; let addressValueIndex = addressIndex + 1; let addressValue = ''; switch (addressType) { case 1: addressLength = 4; addressValue = new Uint8Array( vlessBuffer.slice(addressValueIndex, addressValueIndex + addressLength) ).join('.'); break; case 2: addressLength = new Uint8Array( vlessBuffer.slice(addressValueIndex, addressValueIndex + 1) )[0]; addressValueIndex += 1; addressValue = new TextDecoder().decode( vlessBuffer.slice(addressValueIndex, addressValueIndex + addressLength) ); break; case 3: addressLength = 16; const dataView = new DataView( vlessBuffer.slice(addressValueIndex, addressValueIndex + addressLength) ); // 2001:0db8:85a3:0000:0000:8a2e:0370:7334 const ipv6 = []; for (let i = 0; i < 8; i++) { ipv6.push(dataView.getUint16(i * 2).toString(16)); } addressValue = ipv6.join(':'); // seems no need add [] for ipv6 break; default: return { hasError: true, message: invild addressType is ${addressType}
, }; } if (!addressValue) { return { hasError: true, message: addressValue is empty, addressType is ${addressType}
, }; } return { hasError: false, addressRemote: addressValue, addressType, portRemote, rawDataIndex: addressValueIndex + addressLength, vlessVersion: version, isUDP, }; } /* * Converts a remote socket to a WebSocket connection. * @param {import("@cloudflare/workers-types").Socket} remoteSocket The remote socket to convert. * @param {import("@cloudflare/workers-types").WebSocket} webSocket The WebSocket to connect to. * @param {ArrayBuffer | null} vlessResponseHeader The VLESS response header. * @param {(() => Promise) | null} retry The function to retry the connection if it fails. * @param {(info: string) => void} log The logging function. * @returns {Promise} A Promise that resolves when the conversion is complete. / async function remoteSocketToWS(remoteSocket, webSocket, vlessResponseHeader, retry, log) { // remote--> ws let remoteChunkCount = 0; let chunks = []; /* @type {ArrayBuffer | null} / let vlessHeader = vlessResponseHeader; let hasIncomingData = false; // check if remoteSocket has incoming data await remoteSocket.readable .pipeTo( new WritableStream({ start() { }, /* * * @param {Uint8Array} chunk * @param {} controller / async write(chunk, controller) { hasIncomingData = true; remoteChunkCount++; if (webSocket.readyState !== WS_READY_STATE_OPEN) { controller.error( 'webSocket.readyState is not open, maybe close' ); } if (vlessHeader) { webSocket.send(await new Blob([vlessHeader, chunk]).arrayBuffer()); vlessHeader = null; } else { // console.log(remoteSocketToWS send chunk ${chunk.byteLength}
); // seems no need rate limit this, CF seems fix this??.. // if (remoteChunkCount > 20000) { // // cf one package is 4096 byte(4kb), 4096 * 20000 = 80M // await delay(1); // } webSocket.send(chunk); } }, close() { log(remoteConnection!.readable is close with hasIncomingData is ${hasIncomingData}
); // safeCloseWebSocket(webSocket); // no need server close websocket frist for some case will casue HTTP ERR_CONTENT_LENGTH_MISMATCH issue, client will send close event anyway. }, abort(reason) { console.error(remoteConnection!.readable abort
, reason); }, }) ) .catch((error) => { console.error( remoteSocketToWS has exception
, error.stack || error ); safeCloseWebSocket(webSocket); }); // seems is cf connect socket have error, // 1. Socket.closed will have error // 2. Socket.readable will be close without any data coming if (hasIncomingData === false && retry) { log(retry
) retry(); } } /* * Decodes a base64 string into an ArrayBuffer. * @param {string} base64Str The base64 string to decode. * @returns {{earlyData: ArrayBuffer|null, error: Error|null}} An object containing the decoded ArrayBuffer or null if there was an error, and any error that occurred during decoding or null if there was no error. / function base64ToArrayBuffer(base64Str) { if (!base64Str) { return { earlyData: null, error: null }; } try { // go use modified Base64 for URL rfc4648 which js atob not support base64Str = base64Str.replace(/-/g, '+').replace(/_/g, '/'); const decode = atob(base64Str); const arryBuffer = Uint8Array.from(decode, (c) => c.charCodeAt(0)); return { earlyData: arryBuffer.buffer, error: null }; } catch (error) { return { earlyData: null, error }; } } /* * Checks if a given string is a valid UUID. * Note: This is not a real UUID validation. * @param {string} uuid The string to validate as a UUID. * @returns {boolean} True if the string is a valid UUID, false otherwise. / function isValidUUID(uuid) { const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; return uuidRegex.test(uuid); } const WS_READY_STATE_OPEN = 1; const WS_READY_STATE_CLOSING = 2; /* * Closes a WebSocket connection safely without throwing exceptions. * @param {import("@cloudflare/workers-types").WebSocket} socket The WebSocket connection to close. / function safeCloseWebSocket(socket) { try { if (socket.readyState === WS_READY_STATE_OPEN || socket.readyState === WS_READY_STATE_CLOSING) { socket.close(); } } catch (error) { console.error('safeCloseWebSocket error', error); } } const byteToHex = []; for (let i = 0; i < 256; ++i) { byteToHex.push((i + 256).toString(16).slice(1)); } function unsafeStringify(arr, offset = 0) { return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); } function stringify(arr, offset = 0) { const uuid = unsafeStringify(arr, offset); if (!isValidUUID(uuid)) { throw TypeError("Stringified UUID is invalid"); } return uuid; } /* * Handles outbound UDP traffic by transforming the data into DNS queries and sending them over a WebSocket connection. * @param {import("@cloudflare/workers-types").WebSocket} webSocket The WebSocket connection to send the DNS queries over. * @param {ArrayBuffer} vlessResponseHeader The VLESS response header. * @param {(string) => void} log The logging function. * @returns {{write: (chunk: Uint8Array) => void}} An object with a write method that accepts a Uint8Array chunk to write to the transform stream. / async function handleUDPOutBound(webSocket, vlessResponseHeader, log) { let isVlessHeaderSent = false; const transformStream = new TransformStream({ start(controller) { }, transform(chunk, controller) { // udp message 2 byte is the the length of udp data // TODO: this should have bug, beacsue maybe udp chunk can be in two websocket message for (let index = 0; index < chunk.byteLength;) { const lengthBuffer = chunk.slice(index, index + 2); const udpPakcetLength = new DataView(lengthBuffer).getUint16(0); const udpData = new Uint8Array( chunk.slice(index + 2, index + 2 + udpPakcetLength) ); index = index + 2 + udpPakcetLength; controller.enqueue(udpData); } }, flush(controller) { } }); // only handle dns udp for now transformStream.readable.pipeTo(new WritableStream({ async write(chunk) { const resp = await fetch(dohURL, // dns server url { method: 'POST', headers: { 'content-type': 'application/dns-message', }, body: chunk, }) const dnsQueryResult = await resp.arrayBuffer(); const udpSize = dnsQueryResult.byteLength; // console.log([...new Uint8Array(dnsQueryResult)].map((x) => x.toString(16))); const udpSizeBuffer = new Uint8Array([(udpSize >> 8) & 0xff, udpSize & 0xff]); if (webSocket.readyState === WS_READY_STATE_OPEN) { log(doh success and dns message length is ${udpSize}
); if (isVlessHeaderSent) { webSocket.send(await new Blob([udpSizeBuffer, dnsQueryResult]).arrayBuffer()); } else { webSocket.send(await new Blob([vlessResponseHeader, udpSizeBuffer, dnsQueryResult]).arrayBuffer()); isVlessHeaderSent = true; } } } })).catch((error) => { log('dns udp has error' + error) }); const writer = transformStream.writable.getWriter(); return { /* * * @param {Uint8Array} chunk / write(chunk) { writer.write(chunk); } }; } /* * * @param {string} userID - single or comma separated userIDs * @param {string | null} hostName * @returns {string} / function getVLESSConfig(userIDs, hostName) { const commonUrlPart = :443?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2048#${hostName}
; const separator = "---------------------------------------------------------------"; const hashSeparator = "################################################################"; // Split the userIDs into an array let userIDArray = userIDs.split(','); // Prepare output array let output = []; let header = []; const clash_link = https://subconverter.do.xn--b6gac.eu.org/sub?target=clash&url=https://${hostName}/sub/${userIDArray[0]}?format=clash&insert=false&emoji=true&list=false&tfo=false&scv=true&fdn=false&sort=false&new_name=true
; header.push(\n<p align="center"><img src="https://cloudflare-ipfs.com/ipfs/bafybeigd6i5aavwpr6wvnwuyayklq3omonggta4x2q7kpmgafj357nkcky" alt="图片描述" style="margin-bottom: -50px;">
); header.push(\n<b style=" font-size: 15px;" >Welcome! This function generates configuration for VLESS protocol. If you found this useful, please check our GitHub project for more:</b>\n
); header.push(<b style=" font-size: 15px;" >欢迎!这是生成 VLESS 协议的配置。如果您发现这个项目很好用,请查看我们的 GitHub 项目给我一个star:</b>\n
); header.push(\n<a href="https://github.com/3Kmfi6HP/EDtunnel" target="_blank">EDtunnel - https://github.com/3Kmfi6HP/EDtunnel</a>\n
); header.push(\n<iframe src="https://ghbtns.com/github-btn.html?user=USERNAME&repo=REPOSITORY&type=star&count=true&size=large" frameborder="0" scrolling="0" width="170" height="30" title="GitHub"></iframe>\n\n
.replace(/USERNAME/g, "3Kmfi6HP").replace(/REPOSITORY/g, "EDtunnel")); header.push(<a href="//${hostName}/sub/${userIDArray[0]}" target="_blank">VLESS 节点订阅连接</a>\n<a href="clash://install-config?url=${encodeURIComponent(clash_link)}" target="_blank">Clash 节点订阅连接</a>\n<a href="${clash_link}" target="_blank">Clash 节点订阅连接2</a></p>\n
); header.push(``); // Generate output string for each userID userIDArray.forEach((userID) => { const vlessMain = vless://${userID}@${hostName}${commonUrlPart}
; const vlessSec = `vless://${userID}@${proxyIP}${commonUrlPart}`; output.push(`UUID: ${userID}`); output.push(`${hashSeparator}\nv2ray default ip\n${separator}\n${vlessMain}\n${separator}`); output.push(`${hashSeparator}\nv2ray with best ip\n${separator}\n${vlessSec}\n${separator}`); }); output.push(`${hashSeparator}\n# Clash Proxy Provider 配置格式(configuration format)\nproxy-groups:\n - name: UseProvider\n type: select\n use:\n - provider1\n proxies:\n - Proxy\n - DIRECT\nproxy-providers:\n provider1:\n type: http\n url: https://${hostName}/sub/${userIDArray[0]}?format=clash\n interval: 3600\n path: ./provider1.yaml\n health-check:\n enable: true\n interval: 600\n # lazy: true\n url: http://www.gstatic.com/generate_204\n\n${hashSeparator}`); // HTML Head with CSS const htmlHead = ` <title>EDtunnel: VLESS configuration</title> <style> body { font-family: Arial, sans-serif; background-color: #f0f0f0; color: #333; padding: 10px; } a { color: #1a0dab; text-decoration: none; } img { max-width: 100%; height: auto; } pre { white-space: pre-wrap; word-wrap: break-word; background-color: #fff; border: 1px solid #ddd; padding: 15px; margin: 10px 0; } / Dark mode */ @media (prefers-color-scheme: dark) { body { background-color: #333; color: #f0f0f0; } a { color: #9db4ff; } pre { background-color: #282a36; border-color: #6272a4; } } </style> `; // Join output with newlines, wrap inside and return ` ${htmlHead}
${header.join('')}
${output.join('\n')}`; } function createVLESSSub(userID_Path, hostName) { let portArray_http = [80, 8080, 8880, 2052, 2086, 2095, 2082]; let portArray_https = [443, 8443, 2053, 2096, 2087, 2083]; // Split the userIDs into an array let userIDArray = userID_Path.includes(',') ? userID_Path.split(',') : [userID_Path]; // Prepare output array let output = []; // Generate output string for each userID userIDArray.forEach((userID) => { // Check if the hostName is a Cloudflare Pages domain, if not, generate HTTP configurations // reasons: pages.dev not support http only https if (!hostName.includes('pages.dev')) { // Iterate over all ports for http portArray_http.forEach((port) => { const commonUrlPart_http = `:${port}?encryption=none&security=none&fp=random&type=ws&host=${hostName}&path=%2F%3Fed%3D2048#${hostName}-HTTP-${port}`; const vlessMainHttp = `vless://${userID}@${hostName}${commonUrlPart_http}`; // For each proxy IP, generate a VLESS configuration and add to output proxyIPs.forEach((proxyIP) => { const vlessSecHttp = `vless://${userID}@${proxyIP}${commonUrlPart_http}-${proxyIP}-EDtunnel`; output.push(`${vlessMainHttp}`); output.push(`${vlessSecHttp}`); }); }); } // Iterate over all ports for https portArray_https.forEach((port) => { const commonUrlPart_https = `:${port}?encryption=none&security=tls&sni=${hostName}&fp=random&type=ws&host=${hostName}&path=%2F%3Fed%3D2048#${hostName}-HTTPS-${port}`; const vlessMainHttps = `vless://${userID}@${hostName}${commonUrlPart_https}`; // For each proxy IP, generate a VLESS configuration and add to output proxyIPs.forEach((proxyIP) => { const vlessSecHttps = `vless://${userID}@${proxyIP}${commonUrlPart_https}-${proxyIP}-EDtunnel`; output.push(`${vlessMainHttps}`); output.push(`${vlessSecHttps}`); }); }); }); // Join output with newlines return output.join('\n'); }
白嫖机场
小飞象机场:https://xfx.九品堂.com/#/hom
优惠码:xfx1212
低调使用 资源来自网络
class User:
def init(self, username, password):
self.username = username
self.password = password
class RegistrationSystem:
def init(self):
self.users = []
def register_user(self, username, password):
# 检查用户名是否已经存在
for user in self.users:
if user.username == username:
print("该用户名已经被注册,请选择其他用户名。")
return
# 创建新用户对象并添加到用户列表中
new_user = User(username, password)
self.users.append(new_user)
print("注册成功!")
if name == "main":
# 创建注册系统对象
registration_system = RegistrationSystem()
# 注册新用户
registration_system.register_user("user1", "password1")
registration_system.register_user("user2", "password2")
registration_system.register_user("user1", "password3") # 尝试使用
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.