首页
统计
壁纸
Search
1
青龙面板某东短信登录
463 阅读
2
百度直连
321 阅读
3
桥接模式下 Openwrt 软路由直接访问光猫后台
298 阅读
4
京东脚本库
242 阅读
5
cns Network Server
166 阅读
WEB前端
JavaScript
CSS
Linux
Docker
京东脚本
生活随笔
登录
Search
‖任℡か性
累计撰写
23
篇文章
累计收到
0
条评论
首页
分类
WEB前端
JavaScript
CSS
Linux
Docker
京东脚本
生活随笔
页面
统计
壁纸
搜索到
5
篇与
的结果
2023-06-12
京东脚本库
常用的脚本库faker3ql repo https://git.metauniverse-cn.com/https://github.com/shufflewzc/faker3.git "jd_|jx_|gua_|jddj_|jdCookie" "activity|backUp" "^jd[^_]|USER|function|utils|sendNotify|ZooFaker_Necklace.js|JDJRValidator_|sign_graphics_validate|ql|JDSignValidator|magic|depend|h5sts" "main" KRql repo https://github.com/KingRan/KR.git "jd_|jx_|jdCookie" "activity|backUp" "^jd[^_]|USER|utils|function|sign|sendNotify|ql|JDJR"
2023年06月12日
242 阅读
0 评论
0 点赞
2022-03-29
某东活动互助task_before.sh
#!/usr/bin/env bash # Build 20211009-001-test name_js=( jd_fruit jd_pet jd_plantBean jd_dreamFactory jd_jdfactory jd_crazy_joy jd_jdzz jd_jxnc jd_bookshop jd_cash jd_sgmh jd_cfd jd_health jd_carnivalcity jd_city jd_moneyTree_heip jd_cfdtx ) name_config=( Fruit Pet Bean DreamFactory JdFactory Joy Jdzz Jxnc BookShop Cash Sgmh Cfd Health Carni City MoneyTree TokenJxnc ) env_name=( FRUITSHARECODES ## 1、东东农场互助码 PETSHARECODES ## 2、东东萌宠互助码 PLANT_BEAN_SHARECODES ## 3、种豆得豆互助码 DREAM_FACTORY_SHARE_CODES ## 4、京喜工厂互助码 DDFACTORY_SHARECODES ## 5、东东工厂互助码 JDJOY_SHARECODES ## 6、疯狂的JOY互助码 JDZZ_SHARECODES ## 7、京东赚赚互助码 JXNC_SHARECODES ## 8、京喜农场助力码 BOOKSHOP_SHARECODES ## 9、口袋书店互助码 JD_CASH_SHARECODES ## 10、签到领现金互助码 JDSGMH_SHARECODES ## 11、闪购盲盒互助码 JDCFD_SHARECODES ## 12、京喜财富岛互助码 JDHEALTH_SHARECODES ## 13、东东健康社区互助码 JD818_SHARECODES ## 14、京东手机狂欢城互助码 CITY_SHARECODES ## 15、城城领现金互助码 MONEYTREE_SHARECODES ## 16、摇钱树 JXNCTOKENS ## 17、京喜Token(京喜财富岛提现用) ) var_name=( ForOtherFruit ## 1、东东农场互助规则 ForOtherPet ## 2、东东萌宠互助规则 ForOtherBean ## 3、种豆得豆互助规则 ForOtherDreamFactory ## 4、京喜工厂互助规则 ForOtherJdFactory ## 5、东东工厂互助规则 ForOtherJoy ## 6、疯狂的JOY互助规则 ForOtherJdzz ## 7、京东赚赚互助规则 ForOtherJxnc ## 8、京喜农场助力码 ForOtherBookShop ## 9、口袋书店互助规则 ForOtherCash ## 10、签到领现金互助规则 ForOtherSgmh ## 11、闪购盲盒互助规则 ForOtherCfd ## 12、京喜财富岛互助规则 ForOtherHealth ## 13、东东健康社区互助规则 ForOtherCarni ## 14、京东手机狂欢城互助规则 ForOtherCity ## 15、城城领现金互助规则 ForOtherMoneyTree ## 16、摇钱树 TokenJxnc ## 17、京喜Token(京喜财富岛提现用) ) ## 临时屏蔽某账号运行活动脚本(账号序号匹配) TempBlock_JD_COOKIE(){ source $file_env local TempBlockCookieInterval="$(echo $TempBlockCookie | perl -pe "{s|~|-|; s|_|-|}" | sed 's/\(\d\+\)-\(\d\+\)/{\1..\2}/g')" local TempBlockCookieArray=($(eval echo $TempBlockCookieInterval)) local envs=$(eval echo "\$JD_COOKIE") local array=($(echo $envs | sed 's/&/ /g')) local user_sum=${#array[*]} local m n t for ((m = 1; m <= $user_sum; m++)); do n=$((m - 1)) for ((t = 0; t < ${#TempBlockCookieArray[*]}; t++)); do [[ "${TempBlockCookieArray[t]}" = "$m" ]] && unset array[n] done done jdCookie=$(echo ${array[*]} | sed 's/\ /\&/g') [[ ! -z $jdCookie ]] && export JD_COOKIE="$jdCookie" temp_user_sum=${#array[*]} } ## 临时屏蔽某账号运行活动脚本(pt_pin匹配) TempBlock_JD_PT_PIN(){ [[ -z $JD_COOKIE ]] && source $file_env local TempBlockPinArray=($TempBlockPin) local envs=$(eval echo "\$JD_COOKIE") local array=($(echo $envs | sed 's/&/ /g')) local i m n t pt_pin_temp pt_pin_temp_block for i in "${!array[@]}"; do pt_pin_temp=$(echo ${array[i]} | perl -pe "{s|.*pt_pin=([^; ]+)(?=;?).*|\1|; s|%|\\\x|g}") [[ $pt_pin_temp == *\\x* ]] && pt_pin[i]=$(printf $pt_pin_temp) || pt_pin[i]=$pt_pin_temp for n in "${!TempBlockPinArray[@]}"; do pt_pin_temp_block=$(echo ${TempBlockPinArray[n]} | perl -pe "{s|%|\\\x|g}") [[ $pt_pin_temp_block == *\\x* ]] && pt_pin_block[n]=$(printf $pt_pin_temp_block) || pt_pin_block[n]=$pt_pin_temp_block [[ "${pt_pin[i]}" =~ "${pt_pin_block[n]}" ]] && unset array[i] done done jdCookie=$(echo ${array[*]} | sed 's/\ /\&/g') [[ ! -z $jdCookie ]] && export JD_COOKIE="$jdCookie" temp_user_sum=${#array[*]} } ## 随机账号运行活动 Random_JD_COOKIE(){ [[ -z $JD_COOKIE ]] && source $file_env local envs=$(eval echo "\$JD_COOKIE") local array=($(echo $envs | sed 's/&/ /g')) local user_sum=${#array[*]} local combined_all if [[ $RandomMode = "1" ]]; then [[ ! $ran_num ]] && ran_num=$user_sum if [ $(echo $ran_num|grep '[0-9]') ]; then [[ $ran_num -gt $user_sum || $ran_num -lt 2 ]] && ran_num=$user_sum ran_sub="$(seq $user_sum | sort -R | head -$ran_num)" for i in $ran_sub; do tmp="${array[i]}" combined_all="$combined_all&$tmp" done jdCookie=$(echo $combined_all | sed 's/^&//g') [[ ! -z $jdCookie ]] && export JD_COOKIE="$jdCookie" fi fi } ## 组队任务 combine_team(){ p=$1 q=$2 export jd_zdjr_activityId=$3 export jd_zdjr_activityUrl=$4 } team_task(){ [[ -z $JD_COOKIE ]] && source $file_env local envs=$(eval echo "\$JD_COOKIE") local array=($(echo $envs | sed 's/&/ /g')) local user_sum=${#array[*]} local i j k x y p q local scr=$scr_name local teamer_array=($teamer_num) local team_array=($team_num) if [[ -f /ql/scripts/$scr ]]; then for ((i=0; i<${#teamer_array[*]}; i++)); do combine_team ${teamer_array[i]} ${team_array[i]} ${activityId[i]} ${activityUrl[i]} [[ $q -ge $(($user_sum/p)) ]] && q=$(($user_sum/p)) for ((m = 0; m < $user_sum; m++)); do j=$((m + 1)) x=$((m/q)) y=$(((p - 1)*m + 1)) COOKIES_HEAD="${array[x]}" COOKIES="" if [[ $j -le $q ]]; then for ((n = 1; n < $p; n++)); do COOKIES="$COOKIES&${array[y]}" let y++ done elif [[ $j -eq $((q + 1)) ]]; then for ((n = 1; n < $((p-1)); n++)); do COOKIES_HEAD="${array[x]}&${array[0]}" COOKIES="$COOKIES&${array[y]}" let y++ done elif [[ $j -gt $((q + 1)) ]]; then [[ $((y+1)) -le $user_sum ]] && y=$(((p - 1)*m)) || break for ((n = $m; n < $((m + p -1)); n++)); do COOKIES="$COOKIES&${array[y]}" let y++ [[ $y = $x ]] && y=$((y+1)) [[ $((y+1)) -gt $user_sum ]] && break done fi result=$(echo -e "$COOKIES_HEAD$COOKIES") if [[ $result ]]; then export JD_COOKIE=$result node /ql/scripts/$scr fi # echo $JD_COOKIE done done exit fi } ## 组合互助码格式化为全局变量的函数 combine_sub() { source $file_env local what_combine=$1 local combined_all="" local tmp1 tmp2 local TempBlockCookieInterval="$(echo $TempBlockCookie | perl -pe "{s|~|-|; s|_|-|}" | sed 's/\(\d\+\)-\(\d\+\)/{\1..\2}/g')" local TempBlockCookieArray=($(eval echo $TempBlockCookieInterval)) local envs=$(eval echo "\$JD_COOKIE") local array=($(echo $envs | sed 's/&/ /g')) local user_sum=${#array[*]} local a b i j t sum combined_all for ((i=1; i <= $user_sum; i++)); do local tmp1=$what_combine$i local tmp2=${!tmp1} [[ ${tmp2} ]] && sum=$i || break done [[ ! $sum ]] && sum=$user_sum for ((j = 1; j <= $sum; j++)); do a=$temp_user_sum b=$sum if [[ $a -ne $b ]]; then for ((t = 0; t < ${#TempBlockCookieArray[*]}; t++)); do [[ "${TempBlockCookieArray[t]}" = "$j" ]] && continue 2 done fi local tmp1=$what_combine$j local tmp2=${!tmp1} combined_all="$combined_all&$tmp2" done echo $combined_all | perl -pe "{s|^&||; s|^@+||; s|&@|&|g; s|@+&|&|g; s|@+|@|g; s|@+$||}" } ## 正常依次运行时,组合互助码格式化为全局变量 combine_all() { for ((i = 0; i < ${#env_name[*]}; i++)); do result=$(combine_sub ${var_name[i]}) if [[ $result ]]; then export ${env_name[i]}="$result" fi done } ## 正常依次运行时,组合互助码格式化为全局变量 combine_only() { for ((i = 0; i < ${#env_name[*]}; i++)); do case $1 in *${name_js[i]}*.js | *${name_js[i]}*.ts) if [[ -f $dir_log/.ShareCode/${name_config[i]}.log ]]; then . $dir_log/.ShareCode/${name_config[i]}.log result=$(combine_sub ${var_name[i]}) if [[ $result ]]; then export ${env_name[i]}=$result fi fi ;; *) export ${env_name[i]}="" ;; esac done } TempBlock_JD_COOKIE && TempBlock_JD_PT_PIN && Random_JD_COOKIE if [ $scr_name ]; then team_task else combine_only "$1" fi #if [[ $(ls $dir_code) ]]; then # latest_log=$(ls -r $dir_code | head -1) # . $dir_code/$latest_log # combine_all #fi
2022年03月29日
41 阅读
0 评论
0 点赞
2022-03-29
某东活动互助code.sh
#!/usr/bin/env bash ## Build 20211009-001 ## 导入通用变量与函数 dir_shell=/ql/shell . $dir_shell/share.sh ## 预设的仓库及默认调用仓库设置 ## 将"repo=$repo1"改成repo=$repo2"或其他,以默认调用其他仓库脚本日志 ## 也可自行搜索本脚本内的"name_js=("和"name_js_only",将"repo"改成"repo2"或其他,用以自由组合调用仓库的脚本日志 repo1='panghu999_jd_scripts' #预设的 panghu999 仓库 repo2='JDHelloWorld_jd_scripts' #预设的 JDHelloWorld 仓库 repo3='he1pu_JDHelp' #预设的 he1pu 仓库 repo4='shufflewzc_faker2' #预设的 shufflewzc 仓库 repo5='Wenmoux_scripts_wen_chinnkarahoi' #预设的 Wenmoux 仓库,用于读取口袋书店互助码。需提前拉取温某人的仓库或口袋书店脚本并完整运行。 repo6='Aaron-lv_sync_jd_scripts' #预设的 Aaron-lv 仓库 repo7='smiek2221_scripts' #预设的 smiek2221 仓库 repo=$repo4 #默认调用 shufflewzc_faker2 仓库脚本日志 ## 调试模式开关,默认是0,表示关闭;设置为1,表示开启 DEBUG="1" ## 本脚本限制的最大线程数量 proc_num="8" ## 备份配置文件开关,默认是1,表示开启;设置为0,表示关闭。备份路径 /ql/config/bak/ BACKUP="1" ## 是否删除指定天数以前的备份文件开关,默认是1,表示开启;设置为0,表示关闭。删除路径 /ql/config/bak/ CLEANBAK="1" ## 定义删除指定天数以前的备份文件 CLEANBAK_DAYS="2" ## 定义 jcode 脚本导出的互助码模板样式(选填) ## 不填 使用“按编号顺序互助模板”,Cookie编号在前的优先助力 ## 填 0 使用“全部一致互助模板”,所有账户要助力的码全部一致 ## 填 1 使用“均等机会互助模板”,所有账户获得助力次数一致 ## 填 2 使用“随机顺序互助模板”,本套脚本内账号间随机顺序助力,每次生成的顺序都不一致。 HelpType="" ## 定义指定活动采用指定的互助模板。 ## 设定值为 DiyHelpType="1" 表示启用功能;不填或填其他内容表示不开启功能。 ## 如果只是想要控制某个活动以执行某种互助规则,可以参考下面 case 这个命令的例子来控制 ## 活动名称参见 name_config 定义内容;具体可在本脚本中搜索 name_config=( 获悉 DiyHelpType="0" diy_help_rules(){ case $1 in Fruit) tmp_helptype="0" # 东东农场使用“全部一致互助模板”,所有账户要助力的码全部一致 ;; DreamFactory | JdFactory) tmp_helptype="1" # 京喜工厂和东东工厂使用“均等机会互助模板”,所有账户获得助力次数一致 ;; Jdzz | Joy) tmp_helptype="2" # 京东赚赚和疯狂的Joy使用“随机顺序互助模板”,本套脚本内账号间随机顺序助力,每次生成的顺序都不一致。 ;; *) tmp_helptype=$HelpType # 其他活动仍按默认互助模板生产互助规则。 ;; esac } ## 定义屏蔽模式。被屏蔽的账号将不被助力,被屏蔽的账号仍然可以助力其他账号。 ## 设定值为 BreakHelpType="1" 表示启用屏蔽模式;不填或填其他内容表示不开启功能。 ## 自定义屏蔽账号序号或序号区间。当 BreakHelpType="1"时生效。 ## 设定值为一个或多个不相同正整数,每个正整数不大于账号总数;也可以设置正整数区间,最大正整数不大于账号总数; ## 如:a) 设定为 BreakHelpNum="3" 表示第 3 个账号不被助力; ## b) 设定为 BreakHelpNum="5 7 8 10" 表示第 5 7 8 10 个账号均不被助力; ## c) 设定为 BreakHelpNum="6-12" 表示从第 6 至 12 个账号均不被助力; ## d) 设定为 BreakHelpNum="4 9-14 15~18 19_21" 表示第4个账号、第9至14账号、第15至18账号、第19至21账号均不被助力。注意序号区间连接符仅支持 - ~ _; ## 不按示例填写可能引发报错。 BreakHelpType="0" ## 屏蔽模式 BreakHelpNum="4 9-14 15~18 19_21" ## 屏蔽账号序号或序号区间 ## 定义是否自动更新配置文件中的互助码和互助规则 ## 默认为 UpdateType="1" 表示更新互助码和互助规则;UpdateType="2" 表示只更新互助码,不更新互助规则;UpdateType="3" 表示只更新互助规则,不更新互助码;留空或其他数值表示不更新。 UpdateType="1" ## 定义是否自动安装或修复缺失的依赖,默认为1,表示自动修复;留空或其他数值表示不修复。 FixDependType="1" ## 定义监控修复的依赖名称 package_name="canvas png-js date-fns axios crypto-js ts-md5 tslib @types/node dotenv typescript fs require tslib jsdom" ## 需组合的环境变量列表,env_name需要和var_name一一对应,如何有新活动按照格式添加(不懂勿动) env_name=( FRUITSHARECODES PETSHARECODES PLANT_BEAN_SHARECODES DREAM_FACTORY_SHARE_CODES DDFACTORY_SHARECODES JDJOY_SHARECODES JDZZ_SHARECODES JXNC_SHARECODES BOOKSHOP_SHARECODES JD_CASH_SHARECODES JDSGMH_SHARECODES JDCFD_SHARECODES JDHEALTH_SHARECODES JD818_SHARECODES CITY_SHARECODES MONEYTREE_SHARECODES ) var_name=( ForOtherFruit ForOtherPet ForOtherBean ForOtherDreamFactory ForOtherJdFactory ForOtherJoy ForOtherJdzz ForOtherJxnc ForOtherBookShop ForOtherCash ForOtherSgmh ForOtherCfd ForOtherHealth ForOtherCarni ForOtherCity ForOtherMoneyTree ) ## name_js为脚本文件名,如果使用ql repo命令拉取,文件名含有作者名 ## 所有有互助码的活动,把脚本名称列在 name_js 中,对应 config.sh 中互助码后缀列在 name_config 中,中文名称列在 name_chinese 中。 ## name_js、name_config 和 name_chinese 中的三个名称必须一一对应。 name_js=( "$repo"_jd_fruit "$repo"_jd_pet "$repo"_jd_plantBean "$repo"_jd_dreamFactory "$repo"_jd_jdfactory "$repo"_jd_crazy_joy "$repo"_jd_jdzz "$repo"_jd_jxnc "$repo"_jd_bookshop "$repo"_jd_cash "$repo"_jd_sgmh "$repo"_jd_cfd "$repo"_jd_health "$repo"_jd_carnivalcity "$repo"_jd_city "$repo4"_jd_moneyTree_heip "$repo"_jd_cfd ) name_config=( Fruit Pet Bean DreamFactory JdFactory Joy Jdzz Jxnc BookShop Cash Sgmh Cfd Health Carni City MoneyTree TokenJxnc ) name_chinese=( 东东农场 东东萌宠 京东种豆得豆 京喜工厂 东东工厂 crazyJoy任务 京东赚赚 京喜农场 口袋书店 签到领现金 闪购盲盒 京喜财富岛 东东健康社区 京东手机狂欢城 城城领现金 摇钱树 京喜token ) ## 生成pt_pin清单 gen_pt_pin_array() { local envs=$(eval echo "\$JD_COOKIE") local array=($(echo $envs | sed 's/&/ /g')) local tmp1 tmp2 i pt_pin_temp for i in "${!array[@]}"; do pt_pin_temp=$(echo ${array[i]} | perl -pe "{s|.*pt_pin=([^; ]+)(?=;?).*|\1|; s|%|\\\x|g}") remark_name[i]=$(cat $dir_db/env.db | grep ${array[i]} | perl -pe "{s|.*remarks\":\"([^\"]+).*|\1|g}" | tail -1) [[ $pt_pin_temp == *\\x* ]] && pt_pin[i]=$(printf $pt_pin_temp) || pt_pin[i]=$pt_pin_temp done } ## 导出互助码的通用程序,$1:去掉后缀的脚本名称,$2:config.sh中的后缀,$3:活动中文名称 export_codes_sub() { local task_name=$1 local config_name=$2 local chinese_name=$3 local config_name_my=My$config_name local config_name_for_other=ForOther$config_name local tmp_helptype=$HelpType local BreakHelpInterval=$(echo $BreakHelpNum | perl -pe "{s|~|-|; s|_|-|}" | sed 's/\(\d\+\)-\(\d\+\)/{\1..\2}/g') local BreakHelpNumArray=($(eval echo $BreakHelpInterval)) local BreakHelpNumVerify=$(echo $BreakHelpNum | sed 's/ //g' | perl -pe "{s|-||; s|~||; s|_||}" | sed 's/^\d\+$//g') local i j k m n t pt_pin_in_log code tmp_grep tmp_my_code tmp_for_other user_num tmp_helptype HelpTemp random_num_list local envs=$(eval echo "\$JD_COOKIE") local array=($(echo $envs | sed 's/&/ /g')) local user_sum=${#array[*]} if cd $dir_log/$task_name &>/dev/null && [[ $(ls) ]]; then ## 寻找所有互助码以及对应的pt_pin i=0 pt_pin_in_log=() code=() pt_pin_and_code=$(ls -r *.log | xargs awk -v var="的$chinese_name好友互助码" 'BEGIN{FS="[( )】]+"; OFS="&"} $3~var {print $2,$4}') for line in $pt_pin_and_code; do pt_pin_in_log[i]=$(echo $line | awk -F "&" '{print $1}') code[i]=$(echo $line | awk -F "&" '{print $2}') let i++ done ## 输出My系列变量 if [[ ${#code[*]} -gt 0 ]]; then for ((m = 0; m < ${#pt_pin[*]}; m++)); do tmp_my_code="" j=$((m + 1)) for ((n = 0; n < ${#code[*]}; n++)); do if [[ ${pt_pin[m]} == ${pt_pin_in_log[n]} ]]; then tmp_my_code=${code[n]} break fi done echo "$config_name_my$j='$tmp_my_code'" done else echo "## 从日志中未找到任何互助码" fi ## 输出ForOther系列变量 if [[ ${#code[*]} -gt 0 ]]; then [[ $DiyHelpType = "1" ]] && diy_help_rules $2 case $tmp_helptype in 0) ## 全部一致 HelpTemp="全部一致" echo -e "\n## 采用\"$HelpTemp\"互助模板:" tmp_for_other="" for ((m = 0; m < ${#pt_pin[*]}; m++)); do j=$((m + 1)) if [[ $BreakHelpType = "1" ]]; then if [ "$BreakHelpNumVerify" = "" ]; then for ((t = 0; t < ${#BreakHelpNumArray[*]}; t++)); do [[ "${BreakHelpNumArray[t]}" = "$j" ]] && continue 2 done tmp_for_other="$tmp_for_other@\${$config_name_my$j}" else echo -e "\n#【`date +%X`】 变量值填写不规范,请检查后重试!" tmp_for_other="$tmp_for_other@\${$config_name_my$j}" fi else tmp_for_other="$tmp_for_other@\${$config_name_my$j}" fi done echo "${config_name_for_other}1=\"$tmp_for_other\"" | perl -pe "s|($config_name_for_other\d+=\")@|\1|" for ((m = 1; m < ${#pt_pin[*]}; m++)); do j=$((m + 1)) echo "$config_name_for_other$j=\"$tmp_for_other\"" | perl -pe "s|($config_name_for_other\d+=\")@|\1|" done ;; 1) ## 均等助力 HelpTemp="均等助力" echo -e "\n## 采用\"$HelpTemp\"互助模板:" for ((m = 0; m < ${#pt_pin[*]}; m++)); do tmp_for_other="" j=$((m + 1)) for ((n = $m; n < $(($user_sum + $m)); n++)); do [[ $m -eq $n ]] && continue if [[ $((n + 1)) -le $user_sum ]]; then k=$((n + 1)) else k=$((n + 1 - $user_sum)) fi if [[ $BreakHelpType = "1" ]]; then if [ "$BreakHelpNumVerify" = "" ]; then for ((t = 0; t < ${#BreakHelpNumArray[*]}; t++)); do [[ "${BreakHelpNumArray[t]}" = "$k" ]] && continue 2 done tmp_for_other="$tmp_for_other@\${$config_name_my$k}" else echo -e "\n#【`date +%X`】 变量值填写不规范,请检查后重试!" tmp_for_other="$tmp_for_other@\${$config_name_my$k}" fi else tmp_for_other="$tmp_for_other@\${$config_name_my$k}" fi done echo "$config_name_for_other$j=\"$tmp_for_other\"" | perl -pe "s|($config_name_for_other\d+=\")@|\1|" done ;; 2) ## 本套脚本内账号间随机顺序助力 HelpTemp="随机顺序" echo -e "\n## 采用\"$HelpTemp\"互助模板:" for ((m = 0; m < ${#pt_pin[*]}; m++)); do tmp_for_other="" random_num_list=$(seq $user_sum | sort -R) j=$((m + 1)) for n in $random_num_list; do [[ $j -eq $n ]] && continue if [[ $BreakHelpType = "1" ]]; then if [ "$BreakHelpNumVerify" = "" ]; then for ((t = 0; t < ${#BreakHelpNumArray[*]}; t++)); do [[ "${BreakHelpNumArray[t]}" = "$n" ]] && continue 2 done tmp_for_other="$tmp_for_other@\${$config_name_my$n}" else echo -e "\n#【`date +%X`】 变量值填写不规范,请检查后重试!" tmp_for_other="$tmp_for_other@\${$config_name_my$n}" fi else tmp_for_other="$tmp_for_other@\${$config_name_my$n}" fi done echo "$config_name_for_other$j=\"$tmp_for_other\"" | perl -pe "s|($config_name_for_other\d+=\")@|\1|" done ;; *) ## 按编号优先 HelpTemp="按编号优先" echo -e "\n## 采用\"$HelpTemp\"互助模板" for ((m = 0; m < ${#pt_pin[*]}; m++)); do tmp_for_other="" j=$((m + 1)) for ((n = 0; n < $user_sum; n++)); do [[ $m -eq $n ]] && continue k=$((n + 1)) if [[ $BreakHelpType = "1" ]]; then if [ "$BreakHelpNumVerify" = "" ]; then for ((t = 0; t < ${#BreakHelpNumArray[*]}; t++)); do [[ "${BreakHelpNumArray[t]}" = "$k" ]] && continue 2 done tmp_for_other="$tmp_for_other@\${$config_name_my$k}" else echo -e "\n#【`date +%X`】 变量值填写不规范,请检查后重试!" tmp_for_other="$tmp_for_other@\${$config_name_my$k}" fi else tmp_for_other="$tmp_for_other@\${$config_name_my$k}" fi done echo "$config_name_for_other$j=\"$tmp_for_other\"" | perl -pe "s|($config_name_for_other\d+=\")@|\1|" done ;; esac fi else echo "#【`date +%X`】 未运行过 $task_name.js 脚本,未产生日志" fi } ## 汇总输出 export_all_codes() { gen_pt_pin_array [[ $DEBUG = "1" ]] && echo -e "\n#【`date +%X`】 当前 code.sh 的线程数量:$ps_num" [[ $DEBUG = "1" ]] && echo -e "\n#【`date +%X`】 预设的 JD_COOKIE 数量:`echo $JD_COOKIE | grep -o 'pt_key' | wc -l`" [[ $DEBUG = "1" ]] && echo -e "\n#【`date +%X`】 预设的 JD_COOKIE 环境变量数量:`echo $JD_COOKIE | sed 's/&/\n/g' | wc -l`" [[ $DEBUG = "1" && "$(echo $JD_COOKIE | sed 's/&/\n/g' | wc -l)" = "1" && "$(echo $JD_COOKIE | grep -o 'pt_key' | wc -l)" -gt 1 ]] && echo -e "\n#【`date +%X`】 检测到您将多个 COOKIES 填写到单个环境变量值,请注意将各 COOKIES 采用 & 分隔,否则将无法完整输出互助码及互助规则!" echo -e "\n#【`date +%X`】 从日志提取互助码,编号和配置文件中Cookie编号完全对应,如果为空就是所有日志中都没有。\n\n#【`date +%X`】 即使某个MyXxx变量未赋值,也可以将其变量名填在ForOtherXxx中,jtask脚本会自动过滤空值。\n" if [[ $DiyHelpType = "1" ]]; then echo -e "#【`date +%X`】 您已启用指定活动采用指定互助模板功能!" else echo -n "#【`date +%X`】 您选择的互助码模板为:" case $HelpType in 0) echo "所有账号助力码全部一致。" ;; 1) echo "所有账号机会均等助力。" ;; 2) echo "本套脚本内账号间随机顺序助力。" ;; *) echo "按账号编号优先。" ;; esac fi [[ $BreakHelpType = "1" ]] && echo -e "\n#【`date +%X`】 您已启用屏蔽模式,账号 $BreakHelpNum 将不被助力!" if [ "$ps_num" -gt $proc_num ]; then echo -e "\n#【`date +%X`】 检测到 code.sh 的线程过多 ,请稍后再试!" exit elif [ -z $repo ]; then echo -e "\n#【`date +%X`】 未检测到兼容的活动脚本日志,无法读取互助码,退出!" exit else echo -e "\n#【`date +%X`】 默认调用 $repo 的脚本日志,格式化导出互助码,生成互助规则!" dump_user_info for ((i = 0; i < ${#name_js[*]}; i++)); do echo -e "\n## ${name_chinese[i]}:" export_codes_sub "${name_js[i]}" "${name_config[i]}" "${name_chinese[i]}" done fi } #更新配置文件中互助码的函数 help_codes(){ local envs=$(eval echo "\$JD_COOKIE") local array=($(echo $envs | sed 's/&/ /g')) local user_sum=${#array[*]} local config_name=$1 local chinese_name=$2 local config_name_my=My$config_name local config_name_for_other=ForOther$config_name local ShareCode_dir="$dir_log/.ShareCode" local ShareCode_log="$ShareCode_dir/$config_name.log" local i j k #更新配置文件中的互助码 [[ ! -d $ShareCode_dir ]] && mkdir -p $ShareCode_dir [[ "$1" = "TokenJxnc" ]] && config_name_my=$1 if [ ! -f $ShareCode_log ] || [ -z "$(cat $ShareCode_log | grep "^$config_name_my\d")" ]; then echo -e "\n## $chinese_name\n${config_name_my}1=''\n" >> $ShareCode_log fi for ((i=1; i<=200; i++)); do local new_code="$(cat $latest_log_path | grep "^$config_name_my$i=.\+'$" | sed "s/\S\+'\([^']*\)'$/\1/")" local old_code="$(cat $ShareCode_log | grep "^$config_name_my$i=.\+'$" | sed "s/\S\+'\([^']*\)'$/\1/")" if [[ $i -le $user_sum ]]; then if [ -z "$(grep "^$config_name_my$i" $ShareCode_log)" ]; then sed -i "/^$config_name_my$[$i-1]='.*'/ s/$/\n$config_name_my$i=\'\'/" $ShareCode_log fi if [ "$new_code" != "$old_code" ]; then if [[ "$new_code" != "undefined" ]] && [[ "$new_code" != "{}" ]]; then sed -i "s/^$config_name_my$i='$old_code'$/$config_name_my$i='$new_code'/" $ShareCode_log fi fi elif [[ $i -gt $user_sum ]] && [[ $i -gt 1 ]]; then sed -i "/^$config_name_my$i/d" $ShareCode_log elif [[ $i -eq 1 ]] && [[ -z "$new_code" ]]; then sed -i "s/^$config_name_my$i='\S*'$/$config_name_my$i=''/" $ShareCode_log fi done sed -i "1c ## 上次导入时间:$(date +%Y年%m月%d日\ %X)" $ShareCode_log } #更新配置文件中互助规则的函数 help_rules(){ local envs=$(eval echo "\$JD_COOKIE") local array=($(echo $envs | sed 's/&/ /g')) local user_sum=${#array[*]} local config_name=$1 local chinese_name=$2 local config_name_my=My$config_name local config_name_for_other=ForOther$config_name local ShareCode_dir="$dir_log/.ShareCode" local ShareCode_log="$ShareCode_dir/$config_name.log" local i j k #更新配置文件中的互助规则 if [ -z "$(cat $ShareCode_log | grep "^$config_name_for_other\d")" ]; then echo -e "${config_name_for_other}1=\"\"" >> $ShareCode_log fi for ((j=1; j<=200; j++)); do local new_rule="$(cat $latest_log_path | grep "^$config_name_for_other$j=.\+\"$" | sed "s/\S\+\"\([^\"]*\)\"$/\1/")" local old_rule="$(cat $ShareCode_log | grep "^$config_name_for_other$j=.\+\"$" | sed "s/\S\+\"\([^\"]*\)\"$/\1/")" if [[ $j -le $user_sum ]]; then if [ -z "$(grep "^$config_name_for_other$j" $ShareCode_log)" ]; then sed -i "/^$config_name_for_other$[$j-1]=".*"/ s/$/\n$config_name_for_other$j=\"\"/" $ShareCode_log fi if [ "$new_rule" != "$old_rule" ]; then sed -i "s/^$config_name_for_other$j=\"$old_rule\"$/$config_name_for_other$j=\"$new_rule\"/" $ShareCode_log fi elif [[ $j -gt $user_sum ]] && [[ $j -gt 1 ]]; then sed -i "/^$config_name_for_other$j/d" $ShareCode_log elif [[ $j -eq 1 ]] && [[ -z "$new_rule" ]]; then sed -i "s/^$config_name_for_other$j=\"\S*\"$/$config_name_for_other$j=\"\"/" $ShareCode_log fi done sed -i "1c ## 上次导入时间:$(date +%Y年%m月%d日\ %X)" $ShareCode_log } export_codes_sub_only(){ if [ "$(cat $dir_scripts/"$repo"_jd_cfd.js | grep "// console.log(\`token")" != "" ]; then echo -e "\n# 正在修改 "$repo"_jd_cfd.js ,待完全运行 "$repo"_jd_cfd.js 后即可输出 token !" fi sed -i 's/.*\(c.*log\).*\(${JSON.*token)}\).*/ \1(\`\\n【京东账号${$.index}(${$.UserName})的京喜token好友互助码】\2\\n\`)/g' /ql/scripts/*_jd_cfd.js local task_name=$1 local config_name=$2 local chinese_name=$3 local i j k m n pt_pin_in_log code tmp_grep tmp_my_code tmp_for_other user_num random_num_list local envs=$(eval echo "\$JD_COOKIE") local array=($(echo $envs | sed 's/&/ /g')) local user_sum=${#array[*]} if cd $dir_log/$task_name &>/dev/null && [[ $(ls) ]]; then ## 寻找所有互助码以及对应的pt_pin i=0 pt_pin_in_log=() code=() pt_pin_and_code=$(ls -r *.log | xargs awk -v var="的$chinese_name好友互助码" 'BEGIN{FS="[( )】]+"; OFS="&"} $3~var {print $2,$4}') for line in $pt_pin_and_code; do pt_pin_in_log[i]=$(echo $line | awk -F "&" '{print $1}') code[i]=$(echo $line | awk -F "&" '{print $2}') let i++ done ## 输出互助码 if [[ ${#code[*]} -gt 0 ]]; then for ((m = 0; m < ${#pt_pin[*]}; m++)); do tmp_my_code="" j=$((m + 1)) for ((n = 0; n < ${#code[*]}; n++)); do if [[ ${pt_pin[m]} == ${pt_pin_in_log[n]} ]]; then tmp_my_code=${code[n]} break fi done echo "$config_name$j='$tmp_my_code'" done else echo "## 从日志中未找到任何互助码" fi fi } #更新互助码和互助规则 update_help(){ case $UpdateType in 1) if [ "$ps_num" -le $proc_num ] && [ -f $latest_log_path ]; then backup_del echo -e "\n#【`date +%X`】 开始更新配置文件的互助码和互助规则" for ((i = 0; i < ${#name_config[*]}; i++)); do help_codes "${name_config[i]}" "${name_chinese[i]}" [[ "${name_config[i]}" != "TokenJxnc" ]] && help_rules "${name_config[i]}" "${name_chinese[i]}" done echo -e "\n#【`date +%X`】 配置文件的互助码和互助规则已完成更新" elif [ ! -f $latest_log_path ]; then echo -e "\n#【`date +%X`】 日志文件不存在,请检查后重试!" fi ;; 2) if [ "$ps_num" -le $proc_num ] && [ -f $latest_log_path ]; then backup_del echo -e "\n#【`date +%X`】 开始更新配置文件的互助码,不更新互助规则" for ((i = 0; i < ${#name_config[*]}; i++)); do help_codes "${name_config[i]}" "${name_chinese[i]}" done echo -e "\n#【`date +%X`】 配置文件的互助码已完成更新" elif [ ! -f $latest_log_path ]; then echo -e "\n#【`date +%X`】 日志文件不存在,请检查后重试!" fi ;; 3) if [ "$ps_num" -le $proc_num ] && [ -f $latest_log_path ]; then backup_del echo -e "\n#【`date +%X`】 开始更新配置文件的互助规则,不更新互助码" for ((i = 0; i < ${#name_config[*]}; i++)); do [[ "${name_config[i]}" != "TokenJxnc" ]] && help_rules "${name_config[i]}" "${name_chinese[i]}" done echo -e "\n#【`date +%X`】 配置文件的互助规则已完成更新" elif [ ! -f $latest_log_path ]; then echo -e "\n#【`date +%X`】 日志文件不存在,请检查后重试!" fi ;; *) echo -e "\n#【`date +%X`】 您已设置不更新配置文件的互助码和互助规则,跳过更新!" ;; esac } check_jd_cookie(){ local test_connect="$(curl -I -s --connect-timeout 5 https://bean.m.jd.com/bean/signIndex.action -w %{http_code} | tail -n1)" local test_jd_cookie="$(curl -s --noproxy "*" "https://bean.m.jd.com/bean/signIndex.action" -H "cookie: $1")" if [ "$test_connect" -eq "302" ]; then [[ "$test_jd_cookie" ]] && echo "(COOKIE 有效)" || echo "(COOKIE 已失效)" else echo "(API 连接失败)" fi } dump_user_info(){ echo -e "\n## 账号用户名及 COOKIES 整理如下:" local envs=$(eval echo "\$JD_COOKIE") local array=($(echo $envs | sed 's/&/ /g')) for ((m = 0; m < ${#pt_pin[*]}; m++)); do j=$((m + 1)) echo -e "## 用户名 $j:${pt_pin[m]} 备注:${remark_name[m]} `check_jd_cookie ${array[m]}`\nCookie$j=\"${array[m]}\"" done } backup_del(){ [[ ! -d $dir_log/.bak_ShareCode ]] && mkdir -p $dir_log/.bak_ShareCode local bak_ShareCode_full_path_list=$(find $dir_log/.bak_ShareCode/ -name "*.log") local diff_time if [[ $BACKUP = "1" ]]; then for ((i = 0; i < ${#name_config[*]}; i++)); do [[ -f $dir_log/.ShareCode/${name_config[i]}.log ]] && cp $dir_log/.ShareCode/${name_config[i]}.log $dir_log/.bak_ShareCode/${name_config[i]}_`date "+%Y-%m-%d-%H-%M-%S"`.log done fi if [[ $CLEANBAK = "1" ]]; then for log in $bak_ShareCode_full_path_list; do local log_date=$(echo $log | awk -F "_" '{print $NF}' | cut -c1-10) if [[ $(date +%s -d $log_date 2>/dev/null) ]]; then if [[ $is_macos -eq 1 ]]; then diff_time=$(($(date +%s) - $(date -j -f "%Y-%m-%d" "$log_date" +%s))) else diff_time=$(($(date +%s) - $(date +%s -d "$log_date"))) fi [[ $diff_time -gt $(($CLEANBAK_DAYS * 86400)) ]] && rm -vf $log fi done fi } install_dependencies_normal(){ for i in $@; do case $i in canvas) cd /ql/scripts if [[ "$(echo $(npm ls $i) | grep ERR)" != "" ]]; then npm uninstall $i fi if [[ "$(npm ls $i)" =~ (empty) ]]; then apk add --no-cache build-base g++ cairo-dev pango-dev giflib-dev && npm i $i --prefix /ql/scripts --build-from-source fi ;; *) if [[ "$(npm ls $i)" =~ $i ]]; then npm uninstall $i elif [[ "$(echo $(npm ls $i -g) | grep ERR)" != "" ]]; then npm uninstall $i -g fi if [[ "$(npm ls $i -g)" =~ (empty) ]]; then [[ $i = "typescript" ]] && npm i $i -g --force || npm i $i -g fi ;; esac done } install_dependencies_force(){ for i in $@; do case $i in canvas) cd /ql/scripts if [[ "$(npm ls $i)" =~ $i && "$(echo $(npm ls $i) | grep ERR)" != "" ]]; then npm uninstall $i rm -rf /ql/scripts/node_modules/$i rm -rf /usr/local/lib/node_modules/lodash/* fi if [[ "$(npm ls $i)" =~ (empty) ]]; then apk add --no-cache build-base g++ cairo-dev pango-dev giflib-dev && npm i $i --prefix /ql/scripts --build-from-source --force fi ;; *) cd /ql/scripts if [[ "$(npm ls $i)" =~ $i ]]; then npm uninstall $i rm -rf /ql/scripts/node_modules/$i rm -rf /usr/local/lib/node_modules/lodash/* elif [[ "$(npm ls $i -g)" =~ $i && "$(echo $(npm ls $i -g) | grep ERR)" != "" ]]; then npm uninstall $i -g rm -rf /ql/scripts/node_modules/$i rm -rf /usr/local/lib/node_modules/lodash/* fi if [[ "$(npm ls $i -g)" =~ (empty) ]]; then npm i $i -g --force fi ;; esac done } install_dependencies_all(){ install_dependencies_normal $package_name for i in $package_name; do {install_dependencies_force $i} & done } kill_proc(){ ps -ef|grep "$1"|grep -Ev "$2"|awk '{print $1}'|xargs kill -9 } ## 执行并写入日志 kill_proc "code.sh" "grep|$$" >/dev/null 2>&1 [[ $FixDependType = "1" ]] && [[ "$ps_num" -le $proc_num ]] && install_dependencies_all >/dev/null 2>&1 & latest_log=$(ls -r $dir_code | head -1) latest_log_path="$dir_code/$latest_log" ps_num="$(ps | grep code.sh | grep -v grep | wc -l)" export_all_codes | perl -pe "{s|京东种豆|种豆|; s|crazyJoy任务|疯狂的JOY|}" sleep 5 update_help ## 修改curtinlv入会领豆配置文件的参数 [[ -f /ql/repo/curtinlv_JD-Script/OpenCard/OpenCardConfig.ini ]] && sed -i "4c JD_COOKIE = '$(echo $JD_COOKIE | sed "s/&/ /g; s/\S*\(pt_key=\S\+;\)\S*\(pt_pin=\S\+;\)\S*/\1\2/g;" | perl -pe "s| |&|g")'" /ql/repo/curtinlv_JD-Script/OpenCard/OpenCardConfig.ini
2022年03月29日
115 阅读
0 评论
0 点赞
2022-03-29
青龙面板搭建
1、服务器系统我的是CentOS7.6(不是硬性要求,根据自己需要设置即可)2、防火墙放行你所需要的端口3、选择自己系统对应的安装宝塔命令(CentOS7)yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh4、登录宝塔安装推荐环境,宝塔应用市场里安装Docker PM2
2022年03月29日
49 阅读
0 评论
0 点赞
2022-03-29
青龙面板某东短信登录
使用教程,请拉取镜像至最新版 版本V8.0,本次有重大调整,页面新增手动提交CK方式,兼容强制性使用https问题,旧版能用的,可以不升级,如需升级的,请修改配置青龙部分,以前是填host和port,即ip和端口,现在是直接填host,即http://ip+端口,后面不带 / 哈,具体请查看配置文件模板版本V7.0,略微调整前端页面,兼容手机页面 ,同时修复pt_pin为中文的问题版本V6.0,兼容青龙高低版本之间返回数据不一致性问题 版本V5.0,本次修复了一些问题,优化了低版本青龙遗留的问题,请求token时会叠加追加到本地文件中,导致文件臃肿最后打开青龙应用崩溃问题。 版本V4.0,新增WxPusher推送,支持arm架构运行 1、安装Redis拉取redis的镜像docker pull redis 运行redis (请注意:命令行最后一部分,这里涉及到步骤4中对应的redis部分,密码请不要用简单密码或者不设置密码,容易被扫放病毒)docker run --privileged=true --restart=always --name redis -p 6379:6379 -d redis redis-server --appendonly yes --requirepass "这里是你要设置的密码,双引号保留,如果不需要请连同--requirepass将之删除" 2、新建文件夹放文件mkdir -p jd_cookie cd jd_cookie docker pull yuanter/jd_cookie3、下载配置application.yml文件京东短信车配置文件下载地址wget -O application.yml https://ghproxy.com/https://raw.githubusercontent.com/yuanter/shell/main/application.yml4、配置application.yml文件(需要注意本地redis和本地容器redis的host区别,本地默认127.0.0.1,docker默认redis,如果有公网直接填写公网)vi application.yml5、运行容器 需要自行对应application.yml文件配置,如果redis不是本地docker运行的方式,请将下方的删除--link redis:redisdocker run -d --privileged=true --restart=always --name jd_cookie -p 1170:1170 -v $PWD/application.yml:/application.yml --link redis:redis yuanter/jd_cookie6、浏览器访问路径http://ip:11707、查看运行日志docker logs --tail 300 -f jd_cookie或者docker logs jd_cookie更新教程1、删除容器docker rm -f jd_cookie2、重新拉取镜像docker pull yuanter/jd_cookie3、命令行跳转至启动目录cd jd_cookie4、后续教程,同使用教程第3步开始注意事项1、青龙应用权限至少需要放行“环境变量”2、青龙应用权限一旦选定不能更改,不然需要连接工具删掉redis缓存数据或者重装redis3、放行1170端口,如宝塔、服务器防火墙或者服务器后台安全组,redis的host如也使用公网,也请放行对应的redis端口4、yml文件填写有格式要求,需要填写部分冒号后面有个空格再填写。可下载到本地使用文本编辑工具填写再上传到服务器,不推荐使用电脑自带txt文本编辑器5、最常出错的部分为redis部分,redis的host如果有公网直接填写公网(或者对应的局域网ip,如192.168.0.154)。其次为同时在一台服务网使用docker同时启动redis和本项目,则host可以直接填"redis",不要双引号哈。最后如果redis不是docker安装方式启动,而是直接使用安装包在同一服务器上,则可以直接填127.0.0.1
2022年03月29日
463 阅读
0 评论
0 点赞