python - 淘宝模拟登陆抓取失败
巴扎黑
巴扎黑 2017-04-17 17:32:45
0
2
917

淘宝模拟登陆抓取失败

# __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

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

巴扎黑
巴扎黑

membalas semua(2)
迷茫

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
刘奇

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan