发博文
风间流云

flyscan.blog.chinaunix.net

要为成功找方法,莫为失败找理由   
个人资料
  • 博客访问:221778
  • 博文数量:252
  • 博客积分:4045
  • 博客等级:上校
  • 注册时间:2008-03-19 11:23:44
订阅我的博客
  • 订阅
  • 订阅到鲜果
  • 订阅到抓虾
  • 订阅到Google
字体大小: 博文
淘宝登录(python) (2011-07-25 22:29)
标签转载 

原文地址淘宝登录(python) 作者flint1985


通过抓包跟踪可以看到连接到服务器后服务器会将cookie中插入一个tbtoken字段,然后用这个tbtoken再进行登陆请求。相比支付宝付款来讲,淘宝的登录就简单多了,密码明文发送过去也可以接受,而且也没有什么签名的事情。

  1. import urllib, urllib2, socket, cookielib

  2. import json, re, os

  3. import time, datetime



  4. # set timeout

  5. timeout = 20

  6. timesleep = 10

  7. socket.setdefaulttimeout(timeout)



  8. httpHandler = urllib2.HTTPHandler()

  9. httpsHandler = urllib2.HTTPSHandler()



  10. # cookie support

  11. cookie = cookielib.CookieJar()

  12. cookie_support= urllib2.HTTPCookieProcessor(cookie)



  13. opener = urllib2.build_opener(cookie_support, httpHandler, httpsHandler)

  14. urllib2.install_opener(opener)



  15. def get_headers():

  16.     headers = {

  17.         "User-Agent":"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13",

  18.         "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",

  19.         "Accept-Language":"zh-cn,zh;q=0.5",

  20.         "Accept-Charset":"GB2312,utf-8;q=0.7,*;q=0.7",

  21.         "Keep-Alive":"115",

  22.         "Connection":"keep-alive"

  23.     }

  24.     return headers



  25. def get_login_data():

  26.     login_data = {

  27.             'TPL_username':u'用户名'.encode('gbk'),

  28.             'action':'Authenticator',

  29.             'event_submit_do_login':'anything',

  30.             'TPL_redirect_url':'',

  31.             'from':'tb',

  32.             'fc':'2',

  33.             'style':'default',

  34.             'css_style':'',

  35.             'tid':'',

  36.             'support':'000001',

  37.             'CtrlVersion':'1,0,0,7',

  38.             'loginType':'3',

  39.             'minititle':'',

  40.             'minipara':'',

  41.             'pstrong':'3',

  42.             'longLogin':'-1',

  43.             'llnick':'',

  44.             'sign':'',

  45.             'need_sign':'',

  46.             'isIgnore':'',

  47.             'popid':'',

  48.             'callback':'',

  49.             'guf':'',

  50.             'not_duplite_str':'',

  51.             'need_user_id':'',

  52.             'poy':'',

  53.             'gvfdcname':'10',

  54.             'from_encoding':''

  55.             }

  56.     return login_data



  57. def login(source=None):

  58.     url = 'https://login.taobao.com/member/login.jhtml'

  59.     if not source:

  60.         source = urllib2.urlopen(url)

  61.     token_list = source.headers.get('set-cookie').split(';')[3].split('=')[1]

  62.     login_data = get_login_data()

  63.     login_data['_tb_token_'] = token_list if token_list else ''

  64.     login_data['TPL_password'] = '密码'

  65.     login_data=urllib.urlencode(login_data)

  66.     source = urllib2.Request(url, login_data)

  67.     conn = urllib2.urlopen(source)

  68.     return token_list

博客推荐文章
亲,您还没有登录,请[登录][注册]后再进行评论