cari

Rumah  >  Soal Jawab  >  teks badan

python - 淘宝模拟登陆抓取失败

淘宝模拟登陆抓取失败

# __author__ = ''
# -*- coding: utf-8 -*-
import requests
import re
s = requests.session()
login_data = {'email': 'xxx', 'password': 'xxx', }
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
           'Host':'log.mmstat.com',
            'Referer':'https://www.taobao.com/'
           }

# post 数据实现登录
s.post('https://login.taobao.com/member/login.jhtml?redirectURL=https%3A%2F%2Fwww.taobao.com%2F', login_data, headers=headers)
# 验证是否登陆成功,抓取'淘宝'首页看看内容
r = s.get('https://www.taobao.com')
print r.text

还是小白
用户名和密码省去嘞
得到的还是未登录时的代码,不知道自己少了什么,有成功的大神能告知一下咩

巴扎黑巴扎黑2807 hari yang lalu924

membalas semua(2)saya akan balas

  • 迷茫

    迷茫2017-04-17 17:34:45

    Berhati-hati untuk melampirkan kuki semasa menghantar permintaan~
    Adalah disyorkan untuk memberi perhatian kepada perkara berikut semasa mensimulasikan log masuk:
    Lihat permintaan yang dihantar semasa log masuk biasa dalam penyemak imbas:

    • Apakah medan yang diserahkan?

    • Kuki apa yang anda bawa?

    • Adakah alamat yang diminta mempunyai parameter?

    Berikut ialah perangkak yang saya gunakan untuk merangkak maklumat peminjaman Perpustakaan Universiti Yunnan. Kata laluan lalai untuk sistem log masuk Perpustakaan Yunda ialah lapan digit terakhir nombor pelajar.
    Kemudian ia bukan sahaja nama pengguna dan kata laluan semasa menghantar borang, tetapi juga medan lt tersembunyi. Medan ini ditulis dalam input tersembunyi apabila borang log masuk dijana, jadi ia mesti diekstrak dalam pos Terdapat juga medan jsessionid dalam alamat borang, yang anda juga perlu ekstrak dan tambah dari halaman log masuk;
    Ringkasnya, saya harap idea penyelesaian saya dapat memberi anda sedikit panduan.

    Apa pun, saya akan tunjukkan helahnya~


    Apabila pelayan mengesan tiada keabnormalan antara maklumat log masuk simulasi anda dan maklumat yang biasa diserahkan, log masuk berjaya~

    Jadi, satu perkara yang sangat, sangat penting---

    Tiru tindakan log masuk biasa
    , terus memikirkannya dalam alat penyahpepijat rangkaian penyemak imbas. Dilampirkan di bawah ialah perangkak log masuk simulasi yang saya tulis suatu masa dahulu

     #coding:utf-8
     #!/usr/bin/python 
      
    import HTMLParser 
    import urlparse 
    import urllib 
    import urllib2 
    import cookielib 
    import string 
    import re
    import sys
    import time
    reload(sys)
    sys.setdefaultencoding('utf-8')
    
    COOKIE_FLAG = True  # true使用这次cookie  false使用上次cookie
    
    hosturl = "http://202.203.222.202/cas/login"
    history = "http://202.203.222.202/myspace/reader/book/historyBorrow?pageSize=200&pageNo=1"
    
    cj = cookielib.LWPCookieJar() 
    cookie_support = urllib2.HTTPCookieProcessor(cj) 
    opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler) 
    urllib2.install_opener(opener) 
    #获取 lt
    def getHTML(stdNum):
        cookie = cookielib.CookieJar()
        handler=urllib2.HTTPCookieProcessor(cookie)
        opener = urllib2.build_opener(handler)
        response = opener.open(hosturl)
        for item in cookie:
            if item.name == "JSESSIONID":
                jsessionId = item.value
    
        loginHTML = response.read()
        searchString = 'name="lt" value='
        try:
            index = loginHTML.index(searchString)
        except Exception as err:
            print "err:\t" + err
            return False
        lt = loginHTML[index +17:index +56]
        # print "lt:\t" + lt
        print "JD:   "+jsessionId
        targetPost = 'http://202.203.222.202/cas/login;jsessionid='+ jsessionId + '?service=http%3A%2F%2F202.203.222.202%2Fmyspace%2Freader%2Findex'
        headers = {
                'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1', 
                "Host": "202.203.222.202",
                "Origin": "http://202.203.222.202",
                "Referer": "http://202.203.222.202/cas/login?service=http://202.203.222.202/myspace/reader/index",
                "Upgrade-Insecure-Requests": 1,
              } 
        postData = {
                "username":stdNum,
                "password":stdNum[3:],
                "lt": lt,
                "execution": 'e1s1',
                "_eventId": "submit",
                "submit": "登录",
              }
        postData = urllib.urlencode(postData)
        request = urllib2.Request(targetPost, postData, headers)
        logResult =  urllib2.urlopen(request).read().decode("utf8")
    
        if "登录系统" in logResult:
            print "失败啦!"
            return "login failed "
        historyBorrowPage = urllib2.urlopen(history) 
        historyHTML = historyBorrowPage.read().decode('utf8')
    
        if "登录系统" in historyHTML:
            return False
        else:
            logout = "http://202.203.222.202/myspace/reader/logout"
            logoutYa = urllib2.Request(logout)
            logoutPage = urllib2.urlopen(logoutYa)
            return historyHTML

    balas
    0
  • 怪我咯

    怪我咯2017-04-17 17:34:45

    Mengapa ia alamat Taobao? Hanya gunakan kuki yang anda gunakan untuk log masuk. Zhihu nampaknya mempunyai kod pengesahan juga

    balas
    0
  • Batalbalas