滴滴出行任务脚本

滴滴出行任务脚本

文章目录

1.购买服务器地址2.部署教程3. 代码如下4. 如何联系我

1.购买服务器地址

阿里云 服务器购买地址 https://t.aliyun.com/U/9dtko6

若失效,可用地址 https://www.aliyun.com/daily-act/ecs/activity_selection?source=5176.29345612&userCode=49hts92d 腾讯云 服务器购买地址 https://curl.qcloud.com/wJpWmSfU 若失效,可用地址 https://cloud.tencent.com/act/cps/redirect?redirect=2446&cps_key=ad201ee2ef3b771157f72ee5464b1fea&from=console

2.部署教程

2024年最新青龙面板跑脚本教程(一)持续更新中

3. 代码如下

# !/usr/bin/python3

# 主要功能:自动领取我的权益、福利金签到、瓜分福利金、领取完单返福利金、领取每日优惠券...

# 滴滴

# export didi_jifen_token='9Op**__w==&9Op**__w==',多账号使用换行或&

import datetime

import os

import re

import sys

import time

import requests

ck_list = []

MONTH_SIGNAL = False # 默认关闭月月领券

__version__ = '1.0.0'

# 加载环境变量

def get_env():

global ck_list

env_str = os.getenv("didi_jifen_token")

if env_str:

ck_list += env_str.replace("&", "\n").split("\n")

def get_version_():

latest_version = '获取失败'

username = "didi"

repo = "ziyou"

filepath = "滴滴.py"

url_list = [

f'https://raw.fgit.cf/{username}/{repo}/main/{filepath}',

f"https:/{username}/{repo}/main/{filepath}",

]

for url in url_list:

try:

response = requests.get(url, timeout=(3, 3))

if response.status_code == 200:

response_text = response.text

version_regex = r"^__version__\s*=\s*[\'\"]([^\'\"]*)[\'\"]"

version_match = re.search(version_regex, response_text,

re.MULTILINE)

if version_match is not None and __version__:

latest_version = version_match.group(1)

break

except Exception as e:

if e:

pass

print(f'现在运行的版本是:{__version__},最新版本:{latest_version}')

class DiDi:

LAT = '28.20055' # 纬度

LNG = '113.01907' # 经度

CITY_ID = 24 # 城市id

def __init__(self, token, city_id=CITY_ID, lat=LAT, lng=LNG):

self.token = token

self.city_id = city_id

self.lat = lat

self.lng = lng

self.today = datetime.datetime.now().strftime('%Y-%m-%d') # 今天时间 例如:'2024-11-23'

# 明天时间 例如:'2024-11-24'

self.tomorrow = (datetime.datetime.now() + datetime.timedelta(

days=1)).strftime('%Y-%m-%d')

self.activity_id_today = 0 # 今天的瓜分福利金的活动id 用于完成今天的瓜分福利金 需在14点之前

self.task_id_today = 0 # 完成今天的瓜分福利金的任务id 用于完成今天的瓜分福利金 需在14点之前

self.status_today = 0 # 显示今天的瓜分活动状态 1为待报名 2为已参加 3为已完成待发奖 4为已发奖 5为未参加

self.activity_id_tomorrow = 0 # 明天瓜分福利金的活动id 用于报名明天的瓜分福利金

self.status_tomorrow = 0 # 显示今天的瓜分活动状态 1为待报名 2为已参加 3为已完成待发奖 4为已发奖 5为未参加

self.count_tomorrow = 0

# 签到

def check_in(self):

url = f'https://ut.xiaojukeji.com/ut/welfare/api/action/dailySign'

_json = {"token": self.token,

"lat": self.lat,

"lng": self.lng,

"platform": "na",

"env": '{}'}

response = requests.post(url=url, json=_json)

response_dict = response.json()

# print(response_dict)

if response_dict.get('errno') == 0:

subsidy_amount = response_dict['data']['subsidy_state'][

'subsidy_amount']

print(f"今日签到成功,获得{subsidy_amount}福利金")

return

if response_dict.get('errno') == 40009:

print("今日福利金已签到,无需重复签到!")

return

print(f'福利金签到出错!{response_dict}')

# 获取瓜分活动ID

def get_carve_up_action_id(self):

url = f'https://ut.xiaojukeji.com/ut/welfare/api/home/init/v2'

_json = {"token": self.token,

"lat": self.lat,

"lng": self.lng,

"platform": "na",

"env": '{}'}

response = requests.post(url=url, json=_json)

response_dict = response.json()

# print(response_dict)

divide_data = response_dict['data']['divide_data']['divide']

today_data = divide_data[self.today]

# print(today_data)

self.activity_id_today, self.task_id_today, self.status_today = \

today_data['activity_id'], today_data[

'task_id'], today_data['status']

tomorrow_data = divide_data[self.tomorrow]

# print(tomorrow_data)

self.activity_id_tomorrow, self.status_tomorrow, self.count_tomorrow = \

tomorrow_data['activity_id'], \

tomorrow_data['status'], tomorrow_data['button']['count']

return True

# 报名明天的瓜分福利金

def apply_carve_up_action(self):

url = f'https://ut.xiaojukeji.com/ut/welfare/api/action/joinDivide'

_json = {"token": self.token,

"lat": self.lat,

"lng": self.lng,

"platform": "na",

"env": '{}',

"activity_id": self.activity_id_tomorrow,

"count": self.count_tomorrow,

"type": "ut_bonus"}

response = requests.post(url=url, json=_json)

response_dict = response.json()

# print(response_dict)

if response_dict.get("errno") == 0:

if response_dict.get("data", {}).get("result") is True:

print("报名今日打卡瓜分活动成功!")

return

print(f'报名今日打卡瓜分活动失败!{response_dict}')

# 完成今天的瓜分福利金 需在14点之前

def complete_carve_up_action(self):

url = f'https://ut.xiaojukeji.com/ut/welfare/api/action/divideReward'

_json = {"token": self.token,

"lat": self.lat,

"lng": self.lng,

"platform": "na",

"env": '{}',

"activity_id": self.activity_id_today,

"task_id": self.task_id_today}

response = requests.post(url=url, json=_json)

response_dict = response.json()

# print(response_dict)

if response_dict.get("errno") == 0:

if response_dict.get("data", {}).get("result") is True:

print("完成今日打卡瓜分活动成功!")

return

print(f'完成今日打卡瓜分活动失败!{response_dict}')

# 查询当前福利金数量

def get_info(self):

url = "https://rewards.xiaojukeji.com/loyalty_credit/bonus/getWelfareUsage4Wallet"

params = {"token": self.token, "city_id": self.city_id}

response = requests.get(url=url, params=params)

response_dict = response.json()

# print(response_dict)

balance = response_dict['data']['balance']

return balance

# 查询权益详情

def inquire_benefits_details(self):

url = "https://member.xiaojukeji.com/dmember/h5/privilegeLists"

params = {"token": self.token, "city_id": self.city_id}

time.sleep(0.5)

response = requests.get(url=url, params=params)

response_dict = response.json()

# print(response_dict)

privileges_list = response_dict.get('data', {}).get('privileges',

[]) # 我的权益列表

return privileges_list

# 领取 周周领券 活动的优惠券

def receive_level_gift_week(self):

privileges_list = self.inquire_benefits_details()

for privileges in privileges_list:

if privileges.get('name') not in ['周周领券'] or privileges.get(

'level_gift') is None:

continue

coupons_list = privileges.get('level_gift', {}).get('coupons', [])

for coupons in coupons_list:

status = coupons.get('status') # 0为未领取,1为已使用,2为未使用

if status != 0:

continue

batch_id = coupons.get('batch_id')

# print(batch_id)

print(

f"开始领取 {coupons.get('remark')}{coupons.get('coupon_title')}")

url = f"https://member.xiaojukeji.com/dmember/h5/receiveLevelGift?xbiz=&prod_key=wyc-vip-level&xpsid=&dchn=&xoid=&xenv=passenger&xspm_from=&xpsid_root=&xpsid_from=&xpsid_share=&token={self.token}&batch_id={batch_id}&env={{}}&gift_type=1&city_id={self.city_id}"

time.sleep(0.5)

response = requests.get(url=url)

response_dict = response.json()

# print(f'{response_dict}')

if response_dict.get('errno') == 0:

print('领取成功!')

continue

print(f'领取出错! {response_dict}')

# 领取 月月领券 活动的优惠券

def receive_level_gift_month(self):

if not MONTH_SIGNAL:

print('月月领券已设置关闭')

return

privileges_list = self.inquire_benefits_details()

for privileges in privileges_list:

if privileges.get('name') not in ['月月领券'] or privileges.get(

'level_gift') is None:

continue

coupons_list = privileges.get('level_gift', {}).get('coupons', [])

for coupons in coupons_list:

status = coupons.get('status') # 0为未领取,1为已使用,2为未使用

if status != 0:

continue

batch_id = coupons.get('batch_id')

# print(batch_id)

print(

f"开始领取 {coupons.get('remark')}{coupons.get('coupon_title')}")

url = f"https://member.xiaojukeji.com/dmember/h5/receiveLevelGift?xbiz=&prod_key=wyc-vip-level&xpsid=&dchn=&xoid=&xenv=passenger&xspm_from=&xpsid_root=&xpsid_from=&xpsid_share=&token={self.token}&batch_id={batch_id}&env={{}}&gift_type=1&city_id={self.city_id}"

time.sleep(0.5)

response = requests.get(url=url)

response_dict = response.json()

# print(f'{response_dict}')

if response_dict.get('errno') == 0:

print('领取成功!')

continue

print(f'领取出错! {response_dict}')

# 膨胀 周周领券 活动的优惠券

def swell_coupon(self):

privileges_list = self.inquire_benefits_details() # 我的权益列表

for privileges in privileges_list:

if privileges.get('name') in ['周周领券', '月月领券']:

if privileges.get('level_gift') is None:

continue

coupons_list = privileges.get('level_gift', {}).get('coupons',

[])

for coupons in coupons_list: # 膨胀

swell_status = coupons.get(

'swell_status') # 0代表不能膨胀,1代表能膨胀,2代表已膨胀

# print(swell_status)

if swell_status == 1:

print(

f"开始膨胀 {coupons.get('remark')}{coupons.get('coupon_title')}")

batch_id = coupons.get('batch_id')

coupon_id = coupons.get('coupon_id')

url = f'https://member.xiaojukeji.com/dmember/h5/swell_coupon?city_id={self.city_id}'

_json = {"token": self.token,

"batch_id": batch_id,

"coupon_id": coupon_id,

"city_id": self.city_id}

time.sleep(0.5)

response = requests.post(url=url, json=_json)

response_dict = response.json()

# print(response_dict)

if response_dict.get('error') == 0:

if response_dict.get('data', {}).get(

'is_swell') is True:

print('膨胀成功!')

continue

print('膨胀失败!')

continue

print(f'膨胀出错! {response_dict}')

return

# 领取行程意外险

def receive_travel_insurance(self):

privileges_list = self.inquire_benefits_details() # 我的权益列表

for privileges in privileges_list:

if privileges.get('name') == '行程意外险':

# print(privileges)

need_received = privileges.get('need_received')

if need_received == 1: # 0为未领取,1为已领取

print('已领取了!')

return

if need_received == 0: # 0为未领取,1为已领取

url = 'https://member.xiaojukeji.com/dmember/h5/bindPrivilege'

_json = {"token": self.token, "type": 3}

time.sleep(0.5)

response = requests.post(url=url, json=_json)

response_dict = response.json()

# print(response_dict)

if response_dict.get('errno') == 0:

print('领取成功!')

return

print(f'领取出错! {response_dict}')

return

print(f'出现未知情况!{need_received =} {privileges}')

return

# 领取周三折上折权益

def receive_memberday_discount_multi(self):

privileges_list = self.inquire_benefits_details() # 我的权益列表

for privileges in privileges_list:

if privileges.get('name') == '周三折上折':

# print(privileges)

need_received = privileges.get('need_received')

if need_received == 1: # 0为未领取,1为已领取

print('已领取了!')

return

if need_received == 0: # 0为未领取,1为已领取

url = 'https://member.xiaojukeji.com/dmember/h5/receiveMemberDayDiscount'

_json = {"token": self.token, "privilege_type": 1}

time.sleep(0.5)

response = requests.post(url=url, json=_json)

response_dict = response.json()

# print(response_dict)

if response_dict.get('errno') == 0:

print('领取成功!')

return

print(f'领取出错! {response_dict}')

return

print(f'出现未知情况!{need_received =} {privileges}')

return

# 领取 气泡奖励 完单返福利金

def receive_wyc_order_finish(self):

url = 'https://ut.xiaojukeji.com/ut/welfare/api/home/getBubble'

_json = {"token": self.token,

"lat": self.lat,

"lng": self.lng,

"platform": "na",

"env": "{}"}

# time.sleep(0.5)

response = requests.post(url=url, json=_json)

response_dict = response.json()

# print(response_dict)

bubble_list = response_dict.get('data', {}).get('bubble_list', [])

# print(bubble_list)

for bubble in bubble_list:

if bubble.get('pre_content') == '完单返':

# print(bubble)

cycle_id = bubble.get('cycle_id')

reward_count = bubble.get('reward_count')

url = 'https://ut.xiaojukeji.com/ut/welfare/api/action/clickBubble'

_json = {"token": self.token,

"lat": self.lat,

"lng": self.lng,

"platform": "na",

"env": "{}",

"cycle_id": cycle_id,

"bubble_type": "wyc_order_finish"}

time.sleep(0.5)

response = requests.post(url=url, json=_json)

response_dict = response.json()

# print(response_dict)

if response_dict.get('errno') == 0:

print(f'领取成功,获得{reward_count}福利金!')

return

print(f'领取出错! {response_dict}')

return

# 天天领神券签到

def claim_coupon_check_in(self):

url = 'https://ut.xiaojukeji.com/ut/janitor/api/action/sign/do'

headers = {'Didi-Ticket': self.token}

response = requests.post(url=url, headers=headers)

response_dict = response.json()

# print(response_dict)

if response_dict.get('errno') == 0:

current_progress = response_dict.get("data").get("current_progress")

total_progress = response_dict.get("data").get("total_progress")

print(f'签到成功!签到进度:{current_progress}/{total_progress}')

return

print(f'签到失败!{response_dict.get("errmsg")}')

# 天天领神券抽奖

def claim_coupon_lottery(self):

url = 'https://api.didi.cn/webx/chapter/product/init'

headers = {'Didi-Ticket': self.token}

_json = {"dchn": "dKlklLa",

"args": {"runtime_args": {"token": self.token,

"lat": self.lat, "lng": self.lng,

"env": {},

"platform": "na",

"Didi-Ticket": self.token, }}, }

response = requests.post(url=url, headers=headers, json=_json)

response_dict = response.json()

# print(response_dict)

lottery_chance = response_dict.get('data').get('conf').get(

'strategy_data').get('data').get('lottery_chance')

act_id = response_dict.get('data').get('conf').get('ext').get(

'act_conf').get('act_id')

# print(lottery_chance, act_id)

# print(f'当前抽奖次数为:{lottery_chance}')

for _ in range(lottery_chance):

url = 'https://ut.xiaojukeji.com/ut/janitor/api/action/lottery/doLottery'

headers = {'Didi-Ticket': self.token}

_json = {"act_id": act_id}

response = requests.post(url=url, headers=headers, json=_json)

response_dict = response.json()

# print(response_dict)

if response_dict.get('errno') == 0:

print(

f'抽奖成功!获得{response_dict.get("data").get("prize_data")[0].get("name")}')

time.sleep(5)

continue

print(f'抽奖失败!{response_dict.get("errmsg")}')

return

# 瓜瓜乐

def guaguale(self):

if self.get_carve_up_action_id():

print(f'开始完成今日瓜分活动!')

if self.status_today == 2: # 1为待报名,2为待完成,3为已完成,4为已领取

self.complete_carve_up_action() # 完成瓜分福利金 需在14点之前

elif self.status_today == 3:

print('今天已完成瓜分活动!')

elif self.status_today == 4:

print('今天已领取瓜分活动奖励!')

else:

print('完成失败,可能昨日未报名!')

print(f'开始报名明日瓜分活动!')

if self.status_tomorrow == 1: # 1为待报名,2为待完成,3为已完成,4为已领取

self.apply_carve_up_action() # 报名瓜分福利金

elif self.status_tomorrow == 2:

print('今天已经报名参加瓜分明天的福利金了!')

else:

print('报名参加瓜分明天的福利金出现未知错误!')

def today_pick(self):

url = 'https://api.didi.cn/webx/chapter/page/batch/config'

headers = {'Didi-Ticket': self.token}

_json = {"dchn": "PxJanq9",

"args": [

{"dchn": "kkXgpzO", "prod_key": "ut-limited-seckill",

"runtime_args": {"token": self.token,

"lat": self.lat, "lng": self.lng,

"env": {},

"Didi-Ticket": self.token, }

},

{"dchn": "gL3E8qZ", "prod_key": "ut-support-coupon",

"runtime_args": {"token": self.token,

"lat": self.lat,

"lng": self.lng, "env": {},

"Didi-Ticket": self.token, }

}

]}

response = requests.post(url=url, headers=headers, json=_json)

response_dict = response.json()

# print(response_dict)

activity_list = response_dict.get('data').get('conf')

# print(activity_list)

for activity in activity_list:

if activity.get('dchn') == 'gL3E8qZ':

print('★开始领取每日精选')

coupons_list = activity.get('strategy_data').get('data').get(

'daily_coupon').get('coupons')

coupons_status_name_dict = {'1': '可领取', '2': '已经领取',

'4': '已抢光',

'6': '待前置条件完成'}

for coupon_index, coupon in enumerate(coupons_list):

coupons_name = coupon.get('name')

coupons_status = coupon.get('status') # 1为可领取 2为已经领取 4为抽奖抢券

print(f'{coupon_index + 1}.券名:{coupons_name} '

f'状态:{coupons_status_name_dict[str(coupons_status)]}')

if coupons_status == 1:

print('开始领取')

activity_id = coupon.get('activity_id')

if coupons_name == '打车5元券':

print('该券为分享助力才能领券,不支持自动领取')

continue

if activity_id == '10010':

print(

'该券为明天在目的地栏搜“领券”必得1张快车优惠券,不支持自动领取')

continue

group_id = coupon.get('group_id')

coupon_conf_id = coupon.get('coupon_conf_id')

group_date = coupon.get('group_date')

url = 'https://ut.xiaojukeji.com/ut/janitor/api/action/coupon/bind'

headers = {'Didi-Ticket': self.token}

_json = {

'group_date': group_date,

"activity_id": activity_id,

"group_id": group_id,

"coupon_conf_id": coupon_conf_id,

}

response = requests.post(

url=url, headers=headers, json=_json)

response_dict = response.json()

# print(response_dict)

if response_dict.get('errno') == 0:

# name = response_dict.get('data').get('name')

print(f'领取成功')

time.sleep(0.5)

continue

print(f'领取失败 {response_dict}')

return

if activity.get('dchn') == 'kkXgpzO':

print('★开始领取限时抢')

seckill_list = activity.get('strategy_data').get('data').get(

'seckill') # 秒杀列表

seckill_status_name_dict = {'1': '正在热抢', '2': '即将开始',

'3': '已经开抢'}

coupons_status_name_dict = {'1': '可领取', '2': '已经领取',

'4': '抽奖抢券', '5': '未到时间'}

for seckill in seckill_list:

seckill_name = seckill.get('start_at')

seckill_status = int(

seckill.get('status')) # 1为正在热抢 2为即将开始 3为已经开抢

print(

f'☆☆场次:{seckill_name} 状态:{seckill_status_name_dict[str(seckill_status)]}')

if seckill_status in [1, 3]:

coupons_list = seckill.get('coupons')

for coupon_index, coupon in enumerate(coupons_list):

coupons_name = coupon.get('name')

coupons_status = coupon.get(

'status') # 1为可领取 2为已经领取 4为抽奖抢券

print(f'{coupon_index + 1}.券名:{coupons_name} '

f'状态:{coupons_status_name_dict[str(coupons_status)]}')

if coupons_status == 1:

print('开始领取')

activity_id = coupon.get('activity_id')

group_id = coupon.get('group_id')

coupon_conf_id = coupon.get('coupon_conf_id')

group_date = coupon.get('group_date')

url = 'https://ut.xiaojukeji.com/ut/janitor/api/action/coupon/bind'

headers = {'Didi-Ticket': self.token}

_json = {"activity_id": activity_id,

"group_id": group_id,

'group_date': group_date,

"coupon_conf_id": coupon_conf_id, }

response = requests.post(url=url,

headers=headers,

json=_json)

response_dict = response.json()

# print(response_dict)

if response_dict.get('errno') == 0:

# name = response_dict.get('data').get('name')

print(f'领取成功')

time.sleep(0.5)

continue

print(f'领取失败 {response_dict}')

def main(self):

character = '★★'

print(f'{character}当前福利金数量为:{self.get_info()}')

print(f'{character}开始领取每日精选活动券')

self.today_pick()

print(f'{character}开始进行福利金签到')

self.check_in()

print(f'{character}开始进行瓜瓜乐瓜分福利金')

self.guaguale()

print(f'{character}开始领取 周周领券 活动的优惠券')

self.receive_level_gift_week()

print(f'{character}开始领取 月月领券 活动的优惠券')

self.receive_level_gift_month()

print(f'{character}开始膨胀 周周或月月领券 活动的优惠券')

self.swell_coupon()

print(f'{character}开始领取行程意外险')

self.receive_travel_insurance()

print(f'{character}开始领取周三折上折权益')

self.receive_memberday_discount_multi()

print(f'{character}开始领取气泡奖励')

self.receive_wyc_order_finish()

print(f'{character}开始天天领神券签到')

self.claim_coupon_check_in()

print(f'{character}开始天天领神券抽奖')

self.claim_coupon_lottery()

print(f'{character}当前福利金数量为:{self.get_info()}')

# 主程序

def main(ck_list):

get_version()

get_env()

if not ck_list:

print('没有获取到账号!')

return

print(f'获取到{len(ck_list)}个账号!')

for index, ck in enumerate(ck_list):

print(f'*****第{index + 1}个账号*****')

DiDi(ck).main()

print('')

if __name__ == '__main__':

main(ck_list)

sys.exit()

解析

此脚本是一个针对滴滴出行(DiDi)的福利功能的自动化任务脚本,主要功能:

每日签到,领取福利金;瓜分福利金活动(包括报名和完成任务);自动领取 周周领券 和 月月领券 活动的优惠券;自动膨胀优惠券(如果支持);领取 行程意外险、周三折上折权益 等;完成 完单返福利金 奖励;进行 天天领神券 签到和抽奖;查询和显示当前福利金余额。

脚本通过抓取用户的 didi_jifen_token(从滴滴抓包中获取)来执行用户账户的福利操作。

全局变量及配置

MONTH_SIGNAL: 控制是否启用“月月领券”活动(默认为关闭)。ck_list: 用于存储所有账号的 didi_jifen_token。get_env(): 从环境变量中加载 didi_jifen_token 并加入 ck_list。

DiDi类: 核心功能:

签到与瓜分福利金活动

check_in(): 执行每日福利金签到。get_carve_up_action_id(): 获取瓜分福利金活动的相关信息(活动ID、状态等)。apply_carve_up_action(): 报名瓜分福利金活动。complete_carve_up_action(): 完成当天的瓜分福利金任务。 优惠券相关

inquire_benefits_details(): 查询用户的权益详情。receive_level_gift_week() 和 receive_level_gift_month(): 分别领取“周周领券”和“月月领券”活动的优惠券。swell_coupon(): 对可膨胀的优惠券执行膨胀操作。 其他权益

receive_travel_insurance(): 领取行程意外险。receive_memberday_discount_multi(): 领取“周三折上折”权益。receive_wyc_order_finish(): 领取“完单返福利金”奖励。 天天领神券

claim_coupon_check_in(): 执行天天领神券签到。claim_coupon_lottery(): 完成天天领神券抽奖。 活动券领取

today_pick(): 自动领取每日精选活动券和限时秒杀券。 瓜瓜乐活动

guaguale(): 自动完成瓜分福利金活动的相关步骤(包括完成当天任务和报名明天任务)。

其他辅助功能

get_version: 检查脚本是否有更新版本。main(): 主函数,遍历所有账户执行上述功能。

该脚本通过 didi_jifen_token 来实现自动化操作,完成用户日常需手动操作的滴滴权益任务,大幅提高了效率。请注意隐私保护,谨慎保管 token 信息。

4. 如何联系我

关注公众号即可私信

今晚务必早点睡

相关推荐

轻松上手搜狗输入法:全平台下载安装与设置指南 体育平台送365彩金
探索苹果手机呼吸频率的奥秘 体育平台送365彩金
微店如何添加视频教程 微店怎么接入视频号 体育平台送365彩金