原理概述

该系统采用的传统的cs架构,客户端和服务器的语言都是采用python写的。服务器采用的django框架部署在本地,主要用于自动登陆淘宝,阿里妈妈等平台采集信息,客户端通过hook微信,接受用户的消息,进行判断以及回复。


其中核心代码为:
Login.py

import re
import os
import jsonimport requestss = requests.Session()
# cookies序列化文件
COOKIES_FILE_PATH = 'taobao_login_cookies.txt'class UsernameLogin:def __init__(self, username, ua, TPL_password2):"""账号登录对象:param username: 用户名:param ua: 淘宝的ua参数:param TPL_password2: 加密后的密码"""# 检测是否需要验证码的URLself.user_check_url = 'https://login.taobao.com/member/request_nick_check.do?_input_charset=utf-8'# 验证淘宝用户名密码URLself.verify_password_url = "https://login.taobao.com/member/login.jhtml"# 访问st码URLself.vst_url = 'https://login.taobao.com/member/vst.htm?st={}'# 淘宝个人 主页self.my_taobao_url = 'http://i.taobao.com/my_taobao.htm'# 淘宝用户名self.username = username# 淘宝关键参数,包含用户浏览器等一些信息,很多地方会使用,从浏览器或抓包工具中复制,可重复使用self.ua = ua# 加密后的密码,从浏览器或抓包工具中复制,可重复使用self.TPL_password2 = TPL_password2# 请求超时时间self.timeout = 3def _user_check(self):"""检测账号是否需要验证码:return:"""data = {'username': self.username,'ua': self.ua}try:response = s.post(self.user_check_url, data=data, timeout=self.timeout)response.raise_for_status()except Exception as e:print('检测是否需要验证码请求失败,原因:')raise eneedcode = response.json()['needcode']print('是否需要滑块验证:{}'.format(needcode))return needcodedef _verify_password(self):"""验证用户名密码,并获取st码申请URL:return: 验证成功返回st码申请地址"""verify_password_headers = {'Connection': 'keep-alive','Cache-Control': 'max-age=0','Origin': 'https://login.taobao.com','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36','Content-Type': 'application/x-www-form-urlencoded','Referer': 'https://login.taobao.com/member/login.jhtml?from=taobaoindex&f=top&style=&sub=true&redirect_url=https%3A%2F%2Fi.taobao.com%2Fmy_taobao.htm',}# 登录toabao.com提交的数据,如果登录失败,可以从浏览器复制你的form dataverify_password_data = {'TPL_username': self.username,'ncoToken': 'cdf05a89ad5104403ebb12ebc9b7626af277b066','slideCodeShow': 'false','useMobile': 'false','lang': 'zh_CN','loginsite': 0,'newlogin': 0,'TPL_redirect_url': 'https://s.taobao.com/search?q=%E9%80%9F%E5%BA%A6%E9%80%9F%E5%BA%A6&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306','from': 'tb','fc': 'default','style': 'default','keyLogin': 'false','qrLogin': 'true','newMini': 'false','newMini2': 'false','loginType': '3','gvfdcname': '10','gvfdcre': '68747470733A2F2F6C6F67696E2E74616F62616F2E636F6D2F6D656D6265722F6C6F676F75742E6A68746D6C3F73706D3D61323330722E312E3735343839343433372E372E33353836363032633279704A767526663D746F70266F75743D7472756526726564697265637455524C3D6874747073253341253246253246732E74616F62616F2E636F6D25324673656172636825334671253344253235453925323538302532353946253235453525323542412532354136253235453925323538302532353946253235453525323542412532354136253236696D6766696C65253344253236636F6D6D656E64253344616C6C2532367373696425334473352D652532367365617263685F747970652533446974656D253236736F75726365496425334474622E696E64657825323673706D253344613231626F2E323031372E3230313835362D74616F62616F2D6974656D2E31253236696525334475746638253236696E69746961746976655F69642533447462696E6465787A5F3230313730333036','TPL_password_2': self.TPL_password2,'loginASR': '1','loginASRSuc': '1','oslanguage': 'zh-CN','sr': '1440*900','osVer': 'macos|10.145','naviVer': 'chrome|76.038091','osACN': 'Mozilla','osAV': '5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36','osPF': 'MacIntel','appkey': '00000000','mobileLoginLink': 'https://login.taobao.com/member/login.jhtml?redirectURL=https://s.taobao.com/search?q=%E9%80%9F%E5%BA%A6%E9%80%9F%E5%BA%A6&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306&useMobile=true','showAssistantLink': '','um_token': 'T898C0FDF1A3CEE5389D682340C5F299FFE590F51543C8E3DDA8341C869','ua': self.ua}try:response = s.post(self.verify_password_url, headers=verify_password_headers, data=verify_password_data,timeout=self.timeout)response.raise_for_status()# 从返回的页面中提取申请st码地址except Exception as e:print('验证用户名和密码请求失败,原因:')raise e# 提取申请st码urlapply_st_url_match = re.search(r'<script src="(.*?)"></script>', response.text)# 存在则返回if apply_st_url_match:print('验证用户名密码成功,st码申请地址:{}'.format(apply_st_url_match.group(1)))return apply_st_url_match.group(1)else:raise RuntimeError('用户名密码验证失败!response:{}'.format(response.text))def _apply_st(self):"""申请st码:return: st码"""apply_st_url = self._verify_password()try:response = s.get(apply_st_url)response.raise_for_status()except Exception as e:print('申请st码请求失败,原因:')raise est_match = re.search(r'"data":{"st":"(.*?)"}', response.text)if st_match:print('获取st码成功,st码:{}'.format(st_match.group(1)))return st_match.group(1)else:raise RuntimeError('获取st码失败!response:{}'.format(response.text))def login(self):"""使用st码登录:return:"""# 加载cookies文件if self._load_cookies():return True# 判断是否需要滑块验证self._user_check()st = self._apply_st()headers = {'Host': 'login.taobao.com','Connection': 'Keep-Alive','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}try:response = s.get(self.vst_url.format(st), headers=headers)response.raise_for_status()except Exception as e:print('st码登录请求,原因:')raise e# 登录成功,提取跳转淘宝用户主页urlmy_taobao_match = re.search(r'top.location.href = "(.*?)"', response.text)if my_taobao_match:print('登录淘宝成功,跳转链接:{}'.format(my_taobao_match.group(1)))self._serialization_cookies()return Trueelse:raise RuntimeError('登录失败!response:{}'.format(response.text))def _load_cookies(self):# 1、判断cookies序列化文件是否存在if not os.path.exists(COOKIES_FILE_PATH):return False# 2、加载cookiess.cookies = self._deserialization_cookies()# 3、判断cookies是否过期try:self.get_taobao_nick_name()except Exception as e:os.remove(COOKIES_FILE_PATH)print('cookies过期,删除cookies文件!')return Falseprint('加载淘宝登录cookies成功!!!')return Truedef _serialization_cookies(self):"""序列化cookies:return:"""cookies_dict = requests.utils.dict_from_cookiejar(s.cookies)with open(COOKIES_FILE_PATH, 'w+', encoding='utf-8') as file:json.dump(cookies_dict, file)print('保存cookies文件成功!')def _deserialization_cookies(self):"""反序列化cookies:return:"""with open(COOKIES_FILE_PATH, 'r+', encoding='utf-8') as file:cookies_dict = json.load(file)cookies = requests.utils.cookiejar_from_dict(cookies_dict)return cookiesdef get_taobao_nick_name(self):"""获取淘宝昵称:return: 淘宝昵称"""headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}try:response = s.get(self.my_taobao_url, headers=headers)response.raise_for_status()except Exception as e:print('获取淘宝主页请求失败!原因:')raise e# 提取淘宝昵称nick_name_match = re.search(r'<input id="mtb-nickname" type="hidden" value="(.*?)"/>', response.text)if nick_name_match:print('登录淘宝成功,你的用户名是:{}'.format(nick_name_match.group(1)))return nick_name_match.group(1)else:raise RuntimeError('获取淘宝昵称失败!response:{}'.format(response.text))if __name__ == '__main__':# 淘宝用户名username = '你的淘宝账号'# 淘宝重要参数,从浏览器或抓包工具中复制,可重复使用ua = '119#Ml88qzses2GAoMMzEyFDngNzxSb0aF0jvLJis4SPegM+zO/SrpJmpXMemUBl9S9S2MxpMrnoOrOPEdmp49I4nuxDDsmz42k2MVJW3CkL9U+S4lkGqr32S/0QNEKCFo3T4BKUzs5L/U+g4NeVqrAFWs+XnRbGfoAzRBSedFN89COb/lFLdA7MMOT48oxm5rA1RZeedtNnfU+E471y0ZA8J5BVN88L9eFqwPsUcV58YUot19H7I0rORJVVNEFkfHDgsBB2XtN8gpV8zly3A3E8RmKVNEHT9dAzeIeUspq8fU+S4QR73eALR2PQNs829oASRBSUstN8fUVl4TLLdHR5R26ONNFLMsMXqmBhxiLmXUEbqCaZSCqOfoDGn9jm1VChfC0IYWImgkr3TXv97EmqlkrryajB6Sc4xGvCtn1i0TQSHqH9U//xgEcik+qYs0Hz6F05aod24o5E5w9R/y+SOzuzpj/2LFLbbKMir5vYriyUElW9jJRB3lWl29J1IzE9AkmXQUKvK17xi8m+XMfa/nQOqjNw+9xQ/shUYXNWrdSzn/p4aqAwyVAesSfwrTEM4CoYv8l3G4h6eHXfqkIkI5umAIT/IWyIB1h8pTUszi89IuJEgUnBrn99IzRkSj+LuzojDYzarl5Nz5zCpfO0245KbesCYq/0F7XJhMms61z1rXDvHDJaIsoPxa4WWGgoAp8S1Mt/TWfUw/DBADQgXiBxZFpvM7TyfhxOpP+ItvGnJoDu/9OPzZ8u3VVvskBJGoA1EKT63U+A5sHSlkiweFeprMShrW4mdB8iV2mzkiIxfA7pGDJ6j82UWYtEBPjDbhmNMkMI1IV21vr8X7FZJAkVyBE9+HflkWHTnOZ13/+pjSFyLenTZwuCN9AZbsTBiDWQrw0EFzjQhbo/stzKDBWcyxzdhseP5oQWiZ6xozpV+bLrCuxUORDVkG+x7u2Icp6cVby/xTzpiVKFDZY9buOh3EwsWbDmL9YqEIXMpT+7GBM3jzKjM4RFaAyWJiBbj3UH22eWGIeF61BvnveW2+tPnGq3lCVNF1nHLRvUX3riCkP8N6V+J4StRjZHkMtsU3eZVA2FSKSt0RQ5u45RuiiavvomikyniQgYmLNz57wjrAuLiI3616bPQ6i+FhXoJQhHsIfZoyCukdsL2UlytWm4RPXY+hLaZ2sUMUDO5W9Un2ztnVpprKR/i8tTO7Qy9XevLmVtRe0lkiuDhkJg9URp5I3RvWJbadogH5G2WhocskZhzPEDtiT9xSdR9JSshUmq44/68QbxWrCvYMf9/9M1UGa33zAMcWxhG7xRlPUGG6kPik4ZeOMKoXR2uUWO1ozII2PpbhTls8mte+WYzqjE/cnip5m8FpRIul+BfrO95ybXTzm8j6j+mr8szHx1kiTQUwypyNm7CrxnA5nYdlZRbb26GfgTqtMgzr4xSOwEJroUKMBIWThFBs8OUTzoQEXF9yK6LwVsYyqqXt8dklFWWmZN5p05BIgH1Z5Ia+Eq3R8ER5BU2XjjA4pqvf7kBe7PfEos5O15ZmfQddX+j0MyKi46+sasyy=='# 加密后的密码,从浏览器或抓包工具中复制,可重复使用TPL_password2 = '你的加密后密码'ul = UsernameLogin(username, ua, TPL_password2)ul.login()

至于为什么是这样写的,如果有兴趣的小伙伴可以回复留言,人数多的话,我另开一篇文章讲解淘宝的抓包技术。
摘自:王惠亮的个人博客

python实现微信机器人 + 淘宝客自动领券(二)相关推荐

  1. NET C#微信个人号 HOOK 基于微信2.8.0版本 全接口 微信机器人 淘宝客 二次开发

    pc微信客户端 2.8.0 最新版本 hook 可二次开发 c#调用 2020年03月10日 Update 经过大量测试,现升级协议,最新支持微信PC2.8.0.106.新增了http回调域名配置. ...

  2. 使用 Python 全栈打造淘宝客微信机器人

    1 .前言 1.1.什么是淘宝客 相信很多人都听过或者接触过各类导购 APP.QQ 群.微信群分享一些淘宝商品的优惠券或是其他的优惠信息. 用户可以在这些渠道上获取到相较于从淘宝平台搜索出来的商品更加 ...

  3. 2021年淘宝客系列教程(二)事前准备

    2021年淘宝客系列教程(二)事前准备 本系列立志于将淘宝客如何在微信公众号/微信机器人这类基础上运作,到最后开发一个完整的淘宝客系统而编写,如有雷同,纯属借鉴~ 2021年淘宝客系列教程(一)淘宝客 ...

  4. java淘宝客开发(二)

    java淘宝客开发(二) 淘宝客订单获取接口 第三方淘宝客订单接口调用示例 淘宝客订单获取接口 通过接口获取淘宝客订单,非渠道管理模块,只需要淘宝客授权即可.         通过在淘宝联盟开发平台文 ...

  5. Python+Vue计算机毕业设计淘宝客的导购网站的设计与实现7n318(源码+程序+LW+部署)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Python3.7.7+Django+Mysql5.7+pip list+HBuilderX(Vscode也行)+V ...

  6. skycc淘宝客推广软件 V8.2免费版

    2019独角兽企业重金招聘Python工程师标准>>> skycc淘宝客推广软件,帮助企业实现最高效的网店营销,让网店营销不再局限于一个平台,而是实现全网覆盖式网店营销. skycc ...

  7. 如何用uc自媒体做淘宝客?UC自媒体号哪里有?

    千峻网络为大家介绍一个新的淘宝客推广渠道,目前自媒体平台可以做淘宝客的一个是微信公众号还有一个是头条这两家.近uc自媒体平台也可以卖产品做淘宝客啦. 说起UC订阅号大家也许还会想一想这到底是个什么平台 ...

  8. 淘宝客CMS,微信公众号,微信淘客机器人

    淘宝客CMS,微信公众号,微信淘客机器人一站式淘客导购解决方案 先来写个序 楼主程序员,两耳不闻窗外事,一心只知敲代码,2019年前没接触过淘客,也不懂淘客是什么? 后来有个朋友给我提到,说他在做淘客 ...

  9. 个人号微信淘宝客机器人SDK定制开发教程

    个人号微信淘宝客机器人SDK定制开发教程,来自秋天不穿秋裤,天冷也要风度的程序猿之手,必属精品! 今天给大家介绍微信个人号自动回复机器人的开发教程!使用微信机器人托管微信,可以避免不及时回复错过的消息 ...

最新文章

  1. 2022-2028年中国汽车用胶管行业市场深度分析及投资前景趋势报告
  2. Java8Stream
  3. 线程与内核对象的同步——Windows核心编程学习手札之九
  4. pythonos模块_Python3 入门教程——os模块使用(文件/目录操作)
  5. FastDFS的介绍
  6. 如何用VS2005制作Web安装程序
  7. python文件批量重命名以数字~n的方式重命名_利用Python对文件进行批量重命名
  8. 关于投篮的数学建模模型_数学建模 投篮命中率的数学模型
  9. 海园帮忙写的JQUERY功能,实现了我们想要的,我觉得有点屌哟~~
  10. 全网首发:WINDOWS主机与MAC虚拟机文件访问的解决办法
  11. Linux 关于vmlinux和vmlinuz
  12. 计算机二级excel试题练习网盘,计算机二级练习试题excel
  13. jsp银行排队叫号系统
  14. BUUCTF-Misc-No.3
  15. SHAP模型:可解释机器学习模型
  16. 历代iPhone主要参数对比,更新于2022年03月
  17. 从程序员到项目经理(二十八):该死的结果导向(只看结果,不问过程到底行不行?)
  18. ABAP设置默认打印机
  19. Acrel-6000/B电气火灾监控系统麻城广场设计与应用
  20. Linux 中新下载的FireFox(火狐浏览器)无法运行的解决方法

热门文章

  1. 2017 robotart x86_RobotArt:机器人离线编程仿真软件领航者
  2. 【报告分享】数观食机|2020快手食品行业数据价值报告-磁力引擎-202103.pdf(附下载地址)
  3. 读《解忧杂货店》有感
  4. 夜间环境人脸识别_基于人脸识别的夜间疲劳驾驶判断方法与流程
  5. 软件工程计算机水平 推荐表,软件工程就业推荐表2014届.doc
  6. html5 骰子滚动,CSS3画一个滚动的骰子
  7. 计算机桌面颜色比较暗,电脑显示器颜色偏暗怎么回事
  8. Oracle 协议设配器错误解决方案
  9. 融合正弦余弦和无限折叠迭代混沌映射的蝴蝶优化算法-附代码
  10. ArcEngine 10.2 画圆形