因为前几天写了个Python登录教务网的爬虫,这几天又突然想到用Python登录淘宝试试,于是二话不说,代码走起。本来以为很简单,但一写我就傻眼了,登淘宝的涉及到很多东西,验证码,加密算法,用httpfox查看post数据又很多看不懂的,所以百度大神们的类似代码,经过几天痛苦的尝试,终于搞定了,登淘宝最重要的几点就是:一,验证码,我是用正则提取验证码地址,然后用webbrowser把验证码直接在浏览器中显示,让用户输入;二,获取token,当你处理好了验证码,登录了login_url,你就自然会发现token,然后重定向到另一地址;三,登录用token_url,获取st,再利用st重定向到淘宝用户的主页地址,当你实现了这些就成功了!总的来说就像奔跑吧,兄弟的游戏那种,每获得一个值,登录,就会获得下个值的线索,依次下去,就会成功。这是我的一孔之见,如果我说错了什么,请大神指点!欢迎一起讨论!

参考地址:

http://my.oschina.net/u/811744/blog/191165

http://www.sufeinet.com/thread-4585-1-1.html

代码如下:

</pre><pre name="code" class="python">#-*-coding:gbk-*-
import urllib
import urllib2
import cookielib
import re
import webbrowser
#登录地址
login_url = "https://login.taobao.com/member/login.jhtml"
proxy_url = 'http://120.193.146.95:843'
#post请求头部
headers = {'Host':'login.taobao.com','User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0',  'Referer' : 'https://login.taobao.com/member/login.jhtml','Content-Type': 'application/x-www-form-urlencoded','Connection' : 'Keep-Alive'}
#用户名,密码
username = raw_input("请输入账号: ") #此处不需要密码,因为经过淘宝加密算法后,在下面的ua中已经包含了账号和密码,所以很安全
#所以每个用户的ua都是不一样的
#请求数据包,这三个都是动态生成的,但是不用担心,只要选取其中一组就可以,只要你的用户名和密码不变就可以
ua = '074UW5Tcy...uUm07'#因为ua,gr,password2都太长了所以省略了很多
gr = '687474703A.....343433'
password2 = '100eba2....e674077e'post = {   'ua':ua,'TPL_checkcode':'','CtrlVersion': '1,0,0,7',  'TPL_password':'',  'TPL_redirect_url':'http://i.taobao.com/my_taobao.htm?nekot=udm8087E1424147022443',  'TPL_username':username,  'loginsite':'0','newlogin':'0','from':'tb','fc':'default','style':'default','css_style':'',   'tid':'XOR_1_000000000000000000000000000000_625C4720470A0A050976770A','support':'000001','CtrlVersion':'1,0,0,7','loginType':'4','minititle':'',    'minipara':'',  'umto':'NaN','pstrong':'3','llnick':'', 'sign':'',  'need_sign':'', 'isIgnore':'',  'full_redirect':'', 'popid':'', 'callback':'',  'guf':'',   'not_duplite_str':'',   'need_user_id':'',  'poy':'',   'gvfdcname':'10','gvfdcre':gr,'from_encoding ':'','sub':'','TPL_password_2':password2,'loginASR':'1','loginASRSuc':'1','allp':'',   'oslanguage':'zh-CN','sr':'1366*768','osVer':'windows|6.1','naviVer':'firefox|35'}
postData = urllib.urlencode(post)
proxy = urllib2.ProxyHandler({'http':proxy_url})  #设置代理,防止自己的IP被封
cookieJar = cookielib.LWPCookieJar()
cookie= urllib2.HTTPCookieProcessor(cookieJar)  #智能处理cookie
opener = urllib2.build_opener(cookie,proxy,urllib2.HTTPHandler)
urllib2.install_opener(opener)
req = urllib2.Request(login_url,postData,headers)
taobao = urllib2.urlopen(req)
read = taobao.read()
staus = taobao.getcode()
if staus == 200:print '获取服务器请求成功!'#处理验证码,获取tokenpattern = re.compile(r'(?<=<img id="J_StandardCode_m" src="https://s.tbcdn.cn/apps/login/static/img/blank.gif" data-src=").[^<]*?(?=")')checkCodeUrlList = re.findall(pattern, read)#print checkCodeUrlList[0]webbrowser.open_new_tab(checkCodeUrlList[0])  #这里和下面的[0],只是为了提取列表中的值print '到浏览器看验证码图片'checkcode = raw_input('请输入验证码:')post['TPL_checkcode'] = checkcodepostData = urllib.urlencode(post)req = urllib2.Request(login_url,postData,headers)taobao = urllib2.urlopen(req)read_token = taobao.read()#处理token,获得stpattern_token = re.compile(r'(?<=<input type="hidden" id="J_HToken" value=").[^<]*?(?=")')token = re.findall(pattern_token,read_token)token_url = 'https://passport.alipay.com/mini_apply_st.js?site=0&token=%s&callback=stCallback6' % token[0]req_token = urllib2.Request(token_url)response_token = urllib2.urlopen(req_token).read()#处理st,获得用户淘宝主页的登录地址pattern_st = re.compile(r'(?<="st":").[^<]*?(?=")')st = re.findall(pattern_st,response_token)st_url = 'https://login.taobao.com/member/vst.htm?st=%s&TPL_username=%s' % (st[0],username)req_st = urllib2.Request(st_url)response_st = urllib2.urlopen(req_st).read()print response_stpattern_end = re.compile(r'(?<=top.location = ").[^<]*?(?=";)')end = re.findall(pattern_end,response_st)end_url = '%s' % end[0]req_end = urllib2.Request(end_url)response_end = urllib2.urlopen(req_end).read()print response_end

Python模拟浏览器登录淘宝相关推荐

  1. 用selenium模拟浏览器登录淘宝识别滑动验证码

    用selenium模拟浏览器登录淘宝,使用账号密码的方式登录淘宝,但是在登录的时候遇到需要滑动验证,使用selenium模拟点击滑块,滑动验证码完成登录. 本文的代码现测可用.做个记录,方便以后查看. ...

  2. 关于使用selenium工具调用Firefox浏览器登录淘宝、京东web端的试验

    ** 关于使用selenium工具调用Firefox浏览器登录淘宝.京东web端的试验 ** 1.环境配置(软件安装相关知识大家可在网上查找) 以下是我使用的版本: Firefox 24.0 sele ...

  3. 使用selenium模拟浏览器,获取淘宝搜索页面商品名称销量等信息

    作者:李忠林 Github: https://github.com/Leezhonglin Gitblog: https://leezhonglin.github.io/ 本文仅用于学习. 使用自动化 ...

  4. selenium + Chrome 模拟浏览器爬淘宝信息

    环境: ubuntu16.04 python3.5.2 版本 67.0.3396.87(正式版本) (64 位) chromedriver 2.40 安装所需工具: 1 selenium三方库安装 p ...

  5. python 模拟浏览器登录获取cookie_使用cookielib模拟浏览器在python中获取url

    我正在使用cookielib,有时在浏览器中打开一个url,通过浏览器发出许多其他请求来下载许多其他文件.我可以使用cookielib或任何其他python库复制相同的行为吗?在 我必须从python ...

  6. python实现模拟浏览器登录入口_登录采集——模拟浏览器登录QQ邮箱

    网络爬虫学习中,简单的静态页面数据,难以满足我们的一颗"好学"之心,且现在我们"好奇"的数据往往藏得很深,要么需要登录,要么为动态加载--今天,就来分享一下模拟 ...

  7. Python搜索爬取淘宝商品信息并存储为csv文件(名称、店铺、销量、地址等)

    功能是搜索商品,并把搜到的商品信息一一爬取(多个页面): 爬取商品名称.店铺名称.销量.评论数量.地址等等,然后把信息存储为csv文件- 效果: 首先是程序运行 运行完后可以看到目录下出现了一个csv ...

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

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

  9. Python爬虫实战(5):模拟登录淘宝并获取所有订单

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

最新文章

  1. java触发_怎么样让JAVA 设置一秒钟触发一个事件
  2. linux 毫秒 转换方法,linux-将抖动转换为毫秒
  3. Maven添加本地Jar包方案1
  4. 【Java面试题视频讲解】十六进制转十进制
  5. python流获取控制台_对Python捕获控制台输出流的方法详解
  6. SmartGit使用教程
  7. ssh登陆报错“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”的解决方法
  8. WiFi---AP+STA共存模式(ESP8266)
  9. MS SQL入门基础:删除数据库
  10. the browsermob-proxy server process failed to start
  11. win7电脑误删鼠标键盘驱动_Win7系统鼠标键盘驱动检测不到的三种解决方法
  12. kdj买卖指标公式源码_买卖点KDJ (副图指标 源码 )
  13. Opengl ES Glew库 ----- By YDD的铁皮锅
  14. 使用VSCode打开html文件是空白,在文件夹大小也是0KB解决方法
  15. wim工具扫描linux磁盘,WimTool Pro(WIM映像处理工具)
  16. 重学JS(《JavaScript高级程序设计》笔记) - HTML中的JS
  17. 新硬盘装机出现Disk Read Error解决方案
  18. 测试壁纸相机软件叫什么,如何检测照片的拍摄角度,以及如何像查看桌面应用程序一样自动旋转以显示网站?...
  19. 删除分页符时,保持页面格式不乱
  20. 学习华为,小米研究 AI 芯片

热门文章

  1. 自回归生成网络--WaveNet
  2. WPF之几何图形Geometry
  3. LVS+nginx负载均衡(一)-企业实战lvs负载均衡
  4. js实现简单的登录注册
  5. (C++)输入/输出流
  6. 如何将音频文件转换为MP3格式?
  7. vue 幻灯片组件_带有vue的漂亮幻灯片组件
  8. Linux下编译连接mysql数据库
  9. 数据库隔离级别实现原理
  10. android studio 安装