Python实现上下班抢个顺风单脚本

论坛 期权论坛 脚本     
niminba   2021-5-23 03:45   1570   0

一 程序预览

本程序已经写了多年, 很久没用, 不过刚运行了下竟然还可以成功运行. 先来张运行结果图.

二 最近的滴滴APP已经可以支持设置自动抢单功能, 这个小程序就没有那么大意义了. 在此主要谈一下我当初的想法:

1. 这个小程序运行在电脑上, 人在回家的路上, 有时不想接单了也不好控制. 于是我把一些参数都写到坚果云下的一个文本文件里, 手机上也装一个坚果云, 如果不想接单就把参数改一下就可以了.  详见函数loadTimeConfig.

2. 这个程序一直用urllib2给服务器发请求模拟手机操作以查找单子, 所以对滴滴服务器有一定的压力. 如果频率太快, 滴滴能发现.

3. 参数的抓取我用的是Charles, 具体请百度Google之.

4. 程序中的一些参数现在应该还有效, 便于大家试验. 但一段时间后我会使其无效. 运行前, 请把striveOrder(order)注释掉, 不然是有可能出其不意给我抢个单子的惊恐

5. 本程序只用于实验研究, 请勿乱用. 谢谢.

三 下面是代码+解释, 可以在上面的链接中下载.

程序下载链接

最佳体验所需环境:

Python2.6/7, Python3.x没试
手机电脑上都安装坚果云, 并创建ditime2.txt
手机端有邮件接收APP.

#!/usr/bin/python 
# -*- coding: gb2312 -*- 
 
######################################################################### 
#2015-12-11 09:47:46 
#author: 358275018@qq.com 
#使用Python2.6/7 
######################################################################## 
 
# 有些库没用, 请自行删除 
import urllib2, urllib, traceback, smtplib, datetime 
import os, sys, time,zlib,json,ConfigParser,codecs 
from email.mime.text import MIMEText 
from email.mime.image import MIMEImage 
 
import email.MIMEMultipart 
import email.MIMEText 
import email.MIMEBase 
 
from utility import getPyLogger,debug,info 
 
#mail_host="smtp.qq.com"  #设置服务器 
mail_host='smtp.qq.com' 
mail_user="358275018@qq.com" #用户名 
mail_pass="xxxxxxxxx"  #口令, 请修改!!! 
 
MORNING_START="08:30"  #上班, 截获从8:30到8:40的顺风单 
MORNING_END="08:40" 
AFTERNOON_START="18:05"  #下班, 截获从18:05到18:20的顺风单 
AFTERNOON_END="18:20" 
last_modify_time = 0 
 
TOKEN='JPXq-mw6-YPhBnegPQ6pdbwJvXMOw5SnLfWW6-gl1pVUjDsOwkAMRO8ytQvb62wc34Y_FAiJFVW0d2faVCO9N3o7TihAcEZ5WqyLbov3toYKrmQuuKF2jPdAWfRwN9dNMD6_74VKp-B-VA8mrXkSZMvO-pNEuS8e5z8AAP__' 
 
# 手机和电脑上都安装坚果云, 创建文本文件ditime2.txt, 在手机上修改参数就可以控制正在电脑上运行的本程序 
def loadTimeConfig(): 
 global last_modify_time,MORNING_START,MORNING_END,AFTERNOON_START,AFTERNOON_END 
 file_name = r"C:\ddrive\mynutstore\ditime2.txt" 
 if(not os.path.exists(file_name)): 
 return 
 statinfo=os.stat(file_name) 
 if(statinfo.st_mtime>last_modify_time): 
 last_modify_time = statinfo.st_mtime 
 config = ConfigParser.ConfigParser() 
 try: 
  config.readfp(codecs.open(file_name, "r", "utf_16")) 
 except Exception, e: 
  config.read(file_name) 
 try: 
  MORNING_START=config.get('TIME_INFO', 'MORNING_START').strip() 
 except Exception, e: 
  pass 
 try: 
  MORNING_END=config.get('TIME_INFO', 'MORNING_END').strip() 
  print 'MORNING_END=',MORNING_END 
 except Exception, e: 
  pass 
 try: 
  AFTERNOON_START=config.get('TIME_INFO', 'AFTERNOON_START').strip() 
 except Exception, e: 
  pass 
 try: 
  AFTERNOON_END=config.get('TIME_INFO', 'AFTERNOON_END').strip() 
 except Exception, e: 
  pass 
  
def getHtmlContent(respInfo): 
 htmlContent = '' 
 try: 
 respHtml = respInfo.read() 
 if( ("Content-Encoding" in respInfo.headers) and (respInfo.headers['Content-Encoding'] == "gzip")): 
  htmlContent = zlib.decompress(respHtml, 16+zlib.MAX_WBITS); 
 else: 
  htmlContent = respHtml 
 except BaseException, e: 
 debug(logger, traceback.format_exc()) 
 return htmlContent 
 
def send_mail(to_list,sub,content): 
 me="358275018@qq.com" 
 msg = MIMEText(content,_subtype='plain',_charset='gb2312') 
 msg['Subject'] = sub 
 msg['From'] = me 
 msg['To'] = ";".join(to_list) 
 try: 
 server = smtplib.SMTP() 
 server.connect(mail_host) 
 server.login(mail_user,mail_pass) 
 server.sendmail(me, to_list, msg.as_string()) 
 server.close() 
 return True 
 except Exception, e: 
 print str(e) 
 return False 
  
 
 
 
headers = { 
 'Host': 'api.didialift.com' 
 ,'Accept-Encoding': 'gzip' 
 ,'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 6.0.1; MI 4LTE MIUI/V7.2.11.0.MXDCNDB)' 
} 
common_headers = { 
 'Host': 'common.diditaxi.com.cn' 
 ,'Accept-Encoding': 'gzip' 
 ,'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 6.0.1; MI 4LTE MIUI/V7.2.11.0.MXDCNDB)' 
} 
xiaojukeji_headers = { 
 'Host': 'pay.xiaojukeji.com' 
 ,'Accept-Encoding': 'gzip, deflate' 
 ,'Accept': '*/*' 
 ,'Accept-Language': 'zh-Hans;q=1, en;q=0.9, fr;q=0.8, de;q=0.7, zh-Hant;q=0.6, ja;q=0.5' 
 ,'User-Agent': 'OneTravel/4.1.4.3 (iPhone; iOS 7.1.2; Scale/2.00)' 
} 
 
 
ROUTE_ID_MORNINYK[YJ
JHB\\HBX\]U[YI\
HBYX\\J	[YINX\\[YI\
HB]WH[
[YKZ[YJ]][YK]K^J
K[Y]\J
JJHBX\]W	\]W
HBHX\
HBX\O\BBY\XU\
\
NB\HH\X\]Y\\XY\XY\B\[H\X\[\K[Y[LMJHB[H[[
\[BXY[
HBB]HH[
HB\B[\HBY]K\J	X[\NB[\Z]V[\B[[[\B\HH[\HHBY\OOH]W\NB\H[\HBXZB]\\BB#W9."`9"yceykdBY\
NB[[YHH[YK[[YJ[YK[YJ
JHBH[[YKWBYL[NJNBW^W\W	TWTHB\]T\\\
W^W\
HB\TH\X\[JW^W\
HB\H\KYX[YKX]\\KK]\\TB\H\XU\
\
HB]\\B[BW^W\W	TWSB\]T\\\
W^W\
HB\TH\X\[JW^W\
HB\H\KYX[YKX]\\KK]\\TB\H\XU\
\
HB]\\BBceHBY]S\\NBWH\W	B\H\\	BB][YH[\[\B\]T\\\
]W\W\
HB]W\W\W	\WB]W\W\\	[\BH]W\W\
HB]W\W\O\BB\TH\X\[J]W\W\
HB\H\KYX[YKX]\\K]\\]I\TB\HH\X\]Y\\XY\XY\B\[H\X\[\K[Y[LMJHB[H[[
\[BXY[
HBX\H[
HB]\X\\OOI[X\\\OIBBBY[YWOH	Z[BNBc.&/h9#ybyd+BZ[
N\KI	YH\\	YH\\HB^^[NB\BB]H]\[YJ]X[]
[WJHBY]^\]
NBXZ\]
HBHS	YIXY]]]\[YJ[WJ	KNNNNJHBBXY	\ˋB[JJNBNBf9.y.+S9 99clB[YPYHBBXY	^H\HB\H\
HBXY	OOOOOOOOOOOOOOOOI[\JOOOOOOOOOOOOOOOOO[\HB\[\`9"yceykdB\\\W[YHH\\V^]\[YIBWH\W	B\H\\V\	B[YHH\\V[YIB\H\\V\BHH\\VIBY\H\\VY\BXH\\VXB\[H\\V\	BX[YHH\\VX[YIBBXY	[\\HBXY[H		\XI\J\\\W[YK[YKKXHX[YHBXYXY[
HBBY[\\JNeykdBXY	]H\B]S\\H":` ceykdB[	
	B[H\\\W[YK[J			[YK[J			K[J		Bb,9d":` ceykd9!.BZ[
N\KI[[
HBXZB[YKY\
L
HB^^[NBXYJJHB[YKY\
L
HB` 9a9c.&BZ[
N\KI	YH]\^]	YH]\^]HOB]B."l,y+j:`yk{n#9&)9ki.h9"y`9n+b{.g&i&i&+/c.
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP