recherche

Maison  >  Questions et réponses  >  le corps du texte

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

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

巴扎黑巴扎黑2803 Il y a quelques jours911

répondre à tous(2)je répondrai

  • 迷茫

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

    Attention à joindre des cookies lors de l'envoi de demandes~
    Il est recommandé de faire attention aux points suivants lors de la simulation de connexion :
    Regardez la demande envoyée lors d'une connexion normale dans le navigateur :

    • Quels champs ont été soumis ?

    • Quels cookies avez-vous apporté ?

    • L'adresse demandée a-t-elle des paramètres ?

    Ce qui suit est le robot d'exploration que j'ai utilisé pour explorer les informations d'emprunt de la bibliothèque de l'université du Yunnan. Le mot de passe par défaut pour le système de connexion à la bibliothèque Yunda est constitué des huit derniers chiffres du numéro d'étudiant.
    Ensuite, il ne s'agit pas seulement du nom d'utilisateur et du mot de passe lors de la soumission du formulaire, mais également d'un champ lt masqué. Ce champ est écrit dans l'entrée masquée lors de la génération du formulaire de connexion, il doit donc être extrait
    . dans post Il y a aussi un champ jsessionid dans l'adresse du formulaire, que vous devez également extraire et ajouter depuis la page de connexion

    ;

    En bref, j'espère que mes idées de solutions pourront vous donner quelques conseils.
    Quoi qu'il en soit, je vais vous montrer les astuces~

    Lorsque le serveur ne détecte aucune anomalie entre vos informations de connexion simulées et les informations normalement soumises, la connexion est réussie~
    Donc, un point très, très important--- Imitez les actions de connexion normales, continuez à y penser dans l'outil de débogage réseau du navigateur.

    Vous trouverez ci-dessous le robot d'exploration de connexion simulé que j'ai écrit il y a quelque temps

     #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

    répondre
    0
  • 怪我咯

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

    Pourquoi s'agit-il de l'adresse de Taobao ? Utilisez simplement le cookie avec lequel vous vous êtes connecté. Zhihu semble également avoir un code de vérification

    répondre
    0
  • Annulerrépondre