python模拟登录淘宝,获取cookies,含sign参数破解(新)

  • 旧版方法总结

    • 流程繁琐
    • 需要操作外部工具fildder,方便性差
    • 理解略显困难
    • 成功率不足
  • 新版两种方法

    1 扫码登陆:操作简便,结果可直接使用

 主要思路:使用selenium打开淘宝登录网址,切换至二维码,然后扫码登录。


# -*- coding: utf-8 -*-
"""
-------------------------------------------------File Name:     sweep_QuickMark_login.pyDescription :Author :        taodate:          2019/8/10
-------------------------------------------------Change Activity:
-------------------------------------------------
"""
import timefrom selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import NoSuchElementExceptionclass SessionException(Exception):def __init__(self, message):super().__init__(self)self.message = messagedef __str__(self):return self.messageclass login():def __init__(self):self.browser = Noneself.wait = WebDriverWait(self.browser, 10)def start(self):self.__init__browser()self.browser.get(setting.TB_LOGIN_URL)self.browser.implicitly_wait(10)  # 智能等待,直到网页加载完毕,print('Please scan the qr code!')# 等待扫描二维码while True:qr_code = self.__is_element_exist('#J_QRCodeImg')  # 二维码是否存在login_button = self.__is_element_exist('.J_Submit')  # 登陆按钮是否存在serach_button = self.__is_element_exist('.btn-search.tb-bg')  # 登陆后搜索商品按钮是否存在# 二维码存在,登录按钮存在,登陆后的搜索商品按钮不存在,判定为扫码未完成,继续等待扫码if qr_code and login_button and not serach_button:continueelse:breaktime.sleep(1)  # 每隔1s检测一次是否扫描二维码cookie = self.browser.get_cookies()return cookiedef __init__browser(self):"""初始化浏览器"""options = Options()# options.add_argument("--headless")prefs = {"profile.managed_default_content_settings.images": 1}options.add_experimental_option("prefs", prefs)# options.add_argument('--proxy-server=http://127.0.0.1:9000')options.add_argument('disable-infobars')options.add_argument('--no-sandbox')self.browser = webdriver.Chrome(executable_path=setting.CHROME_DRIVER_PATH, options=options)self.browser.implicitly_wait(3)self.browser.maximize_window()def __is_element_exist(self, selector):"""检查是否存在指定元素"""try:self.browser.find_element_by_css_selector(selector)return Trueexcept NoSuchElementException:return Falseif __name__ == '__main__':cookie = login().start()

2 例用mitmdump登录,并破解sign参数

 主要思路
   (1)mitmdump拦截登录请求,获取cookies信息
    ①编写mitmdump拦截函数:

# -*- coding: utf-8 -*-
"""
-------------------------------------------------File Name:     login.pyDescription :   Author :        taodate:          2019/8/10
-------------------------------------------------Change Activity:
-------------------------------------------------
"""
import jsondef response(flow):"""instruction:1.at current directory and open terminal and input commandmitmdump -s login.py2.open url and loginhttps://login.m.taobao.com/login.htm?_input_charset=utf-8"""url = 'https://login.m.taobao.com/login.htm?_input_charset=utf-8'if url in flow.request.url:cookie = flow.request.headers# 将登陆后的请求头信息存入request_headers.jsonwith open('request_headers.json', 'w') as f:f.write(json.dumps(dict(cookie)))f.flush()

    ②使用命令mitmdump -s login.py,运行程序
    ③配置谷歌浏览器代理,是mitmdump可以在本地抓包,具体配置如下两张图:


    ④打开网址https://login.m.taobao.com/login.htm?_input_charset=utf-8,登陆即可。
   (2)从已获取的cookies信息中提取相应元素,构造淘宝sign参数
    sign的生成公式为md5Hex(token&t&时间戳&appKey&data),因此构造token,appKey,data,时间戳四个参数即可。(以爬取该店铺第一页商品为例:https://skin79.tmall.com/shop/view_shop.htm)
    data参数

data = """{"m":"shopitemsearch","vm":"nw","sversion":"4.6","shopId":"135330822","sellerId":"2395131222","style":"wf","page":1,"sort":"_coefp","catmap":"","wirelessShopCategoryList":""}"""

    token参数

import redef _m_h5_tk_cookie(self):# 读取前文提到所获取到的cookies文件,提取tokenwith open('request_headers.json', 'r') as f:json_obj = json.loads(f.read())cookie = json_obj['cookie']# print(cookie)__m_h5_tk = [_m for _m in cookie.split(';') if '_m_h5_tk=' in _m][0]_m_h5_tk = re.findall(r'_m_h5_tk=(.*?)_', __m_h5_tk)[0]return _m_h5_tk

    appKey参数

 """通过抓包,拿到get所需的参数,此参数含appKey"""params= {'jsv': '2.3.16','appKey': '12574478', # appKey就在此处't': str(int(time.time() * 1000)),'api': 'mtop.taobao.wsearch.h5search','v': '1.0','H5Request': 'true','ecode': '1','AntiCreep': 'true','AntiFlool': 'true','type': 'jsonp','dataType': 'jsonp','callback': 'mtopjsonp1','data': data,}

    时间戳参数

import timetimestamp = str(int(time.time()*1000))

    生成sign

import hashlibsign_str = '%s&%s&%s&%s'%(token, timestamp , appKey, data)def sign(self, sign_str):"""整合得到的四个参数,生成sign参数(通过分析得知sign是md5加密):return sign"""md5_obj = hashlib.md5()md5_obj.update(sign_str.encode("utf-8"))return md5_obj.hexdigest()

    发起requests请求,获取数据

 import jsonimport requestsimport fake_useragentparams = params.update({'sign': sign})url = "https://h5api.m.taobao.com/h5/mtop.taobao.wsearch.appsearch/1.0/"data_obj =  json.loads(data)headers = {'User-Agent': fake_useragent.UserAgent().random, # 随机请求头'Accept': '*/*','Connection': 'keep-alive','Accept-Language': 'zh-CN,zh;q=0.8','Referer': 'https://market.m.taobao.com/app/tb-source-app/shop-auction/pages/auction?_w&sellerId=%s&shopId=%s&disablePromotionTips=false&shop_navi=allitems&displayShopHeader=true'%(data_obj ['sellerId'], data_obj ['shopId']),}requests.packages.urllib3.disable_warnings(InsecureRequestWarning)response = requests.get(url, headers=headers, params=params, verify=False, timeout=5)text = response.text
  至此,cookies获取的两种新方法以及根据cookies获取sign值的方法介绍完毕,selenium安装与使用、如何解析sign生成等等未介绍的内容自行百度即可。以上均为个人整理,如有更巧妙简洁的方法,欢迎留言讨论。原创不易,敬谢支持!

python模拟登陆淘宝(更新版)相关推荐

  1. 利用Python模拟登陆淘宝,实现购物秒杀!

    模拟登录 学爬虫,总能听到模拟登录这四个字,究竟什么是模拟登录?通俗一点讲,模拟登录就是程序用账号和密码自动登录一个网站.然后,拿到只有登录后,才能下载的网站数据. 很多人学习python,不知道从何 ...

  2. Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享

    支付宝十年账单上的数字有点吓人,但它统计的项目太多,只是想看看到底单纯在淘宝上支出了多少,于是写了段脚本,统计任意时间段淘宝订单的消费情况,看那结果其实在淘宝上我还是相当节约的说. 脚本的主要工作是模 ...

  3. python模拟登陆淘宝

    使用教程 下载chrome浏览器 查看chrome浏览器的版本号,下载对应版本号的chromedriver驱动 pip安装下列包 pip install selenium 登录微博,并通过微博绑定淘宝 ...

  4. selenium模拟登陆淘宝,获取cookies

    新年工作第一天,再次祝大家新年快乐,猪年大吉! 1.前言,前期准备 这次分享一下模拟登陆淘宝实记.淘宝作为中国几大电商网站之一,反爬措施可以说是相当完善的,在这里我会分享出我是如何使用selenium ...

  5. php 模拟登录淘宝taobao阿里妈妈|模拟登录淘宝联盟|curl模拟登录淘宝|模拟登陆淘宝采集数据

    php 模拟登录淘宝taobao阿里妈妈|模拟登录淘宝联盟|curl模拟登录淘宝|模拟登陆淘宝采集数据 在很多项目中我们可能要采集淘宝会员中心的一些数据.但是程序采集的时候会员中心必须是登录的,这里我 ...

  6. Python学习教程:用Python模拟登录淘宝

    今天跟大家出的Python学习教程,Python模拟登录淘宝,我知道,肯定是吸引了你,一起来看看吧! 最近想爬取淘宝的一些商品,但是发现如果要使用搜索等一些功能时基本都需要登录,所以就想出一篇模拟登录 ...

  7. selenium使用账号密码模拟登陆淘宝,使用账号密码!

    1,需要相关的库如下 from selenium import webdriver from selenium.webdriver.common.action_chains import Action ...

  8. 手把手教你用Python模拟登录淘宝

    作者 | 猪哥66 来源 | 裸睡的猪(ID:IT--Pig) 最近想爬取淘宝的一些商品,但是发现如果要使用搜索等一些功能时基本都需要登录,所以就想出一篇模拟登录淘宝的文章! 看了下网上有很多关于模拟 ...

  9. Python自动登陆淘宝并爬取商品数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 基本开发环境 Python 3.6 Pycharm import time from sel ...

最新文章

  1. Effective C++ --5 实现
  2. JQuery-学习笔记01【基础——JQuery基础】
  3. cuDNN error: CUDNN_STATUS_EXECUTION_FAILED
  4. 织梦DEDE网站后台如何上传附件
  5. 苹果如何分屏_刚刚,苹果证实,iPhone12 刘海没了!
  6. Hive性能优化(全面)
  7. SVN安装后创建仓库、用户、上传代码
  8. 推流式搅拌器选型功率计算方法_QSJ-1000
  9. CH582 BLE 5.0 使用 LE Coded 广播和连接
  10. 随机数公式生成一个负数和正数之间的数_随机生成数据的公式 如何在EXCEL随机生成数字,要正负的。...
  11. C预处理器和C函数库
  12. 今年过年不送礼,送礼就送......
  13. 简单的射击类Android游戏--《环形射击》
  14. ggplot绘制小提琴图
  15. 十一届蓝桥模拟赛 元素之间最大的元素距离 JAVA
  16. 【docker】Mac下oracle10g下载安装
  17. PowerPC的嵌入式Linux培训大纲
  18. Android通知——Notification
  19. Office2003/2007/2010/2013强力卸载工具下载
  20. Java容器分类示意图

热门文章

  1. 对于低收入的研究生来说,是否说明读研的意义并不大
  2. What is the difference between a theorem, a lemma, and a corollary?
  3. 计算机各个接口PCB-Layout 规则要求
  4. WPF_图画(二)Drawing抽象类
  5. 【面试复盘】腾讯IEG天美j3工作室
  6. 利用css制作3D照片墙
  7. 无盘服务器架设之四:iPxe无盘超级应用实例
  8. mysql数据库DDL,DML,DCL操作
  9. 服务器操作系统巡检维护,服务器操作系统巡检内容
  10. 凡科自建网站有服务器吗,如何搭建网站服务器,有什么步骤?