python爬虫模拟登陆界面总是登陆前的网页

wuzheng_1994 发布于 2016/10/14 12:14
阅读 617
收藏 0

最近几天爬学校的网站,现在用python模拟登陆都登不上,具体代码如下:

这是我们学校登陆网页的html:

<form id="casLoginForm" class="fm-v clearfix amp-login-form" role="form" action="/authserver/login?service=http://my.njupt.edu.cn/login.do" method="post">

       <div class="box-right">
       		<h1><img src="/authserver/custom/images/log-tit.png"></h1>
            <ul>
            <li>
			<span class="ipt_title">用户名:</span>
            <input id="username" name="username" placeholder="用户名" class="ipt" type="text" value=""/>
            <span id="usernameError" style="display:none;" class="auth_error">*</span>
            </li>
            <li>
			<span class="ipt_title">密 码:</span>
            <input id="password" name="password" placeholder="密码" class="ipt" type="password" value="" autocomplete="off"/>
            <span id="passwordError" style="display:none;" class="auth_error">*</span>



我的爬虫代码具体如下:

# -*- coding: utf-8 -*-

import re
import urllib
import urllib2
import cookielib
import sys
import time
#设置编码方式
reload(sys)
sys.setdefaultencoding('utf8')

#设置浏览器的cookie
cookie = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))

#表单数据
# cookie = cookielib.CookieJar()
html = urllib2.urlopen('http://ids6.njupt.edu.cn/authserver/login?service=http%3A%2F%2Fmy.njupt.edu.cn%2Flogin.do').read()
ltre = re.compile(r'<input type="hidden" name="lt" value="(LT-.*?-cas)"/',re.S)
ltlist = re.findall(ltre,html)
lt = ltlist[0]
print lt

postdata = urllib.urlencode({
    'username':'******',
    'password':'*****',
    # 'lt':lt,
    'dllt':'userNamePasswordLogin',
    'execution':'e1s1',
    '_eventId':'submit',
    'rmShown':'1'
})

headers1 = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0',
           'Referer':'http://ids6.njupt.edu.cn/authserver/login?service=http://my.njupt.edu.cn/login.do',
            '(Request-Line)':'GET /login.do HTTP/1.1','Host':'my.njupt.edu.cn','Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
           'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
           'Accept-Encoding':'gzip, deflate',
            'Cookie':'iPlanetDirectoryPro=AQIC5wM2LY4SfcziRwPz5SUo6HkFhVzNjLhfAotjSwGn6S0%3D%40AAJTSQACMDE%3D%23; MOD_AUTH_CAS=MOD_AUTH_ST-17844-2OqPfttbQKXTC5g0e3Gs1476329189818-DFPY-cas'
            }

req = urllib2.Request(
    url = 'http://my.njupt.edu.cn/ccs/main.login.do',
    data = postdata,
    headers = headers1
)
result = opener.open(req)
htmlflag = result.read()
print htmlflag

result = opener.open('http://my.njupt.edu.cn/index.do')
# result = urllib2.urlopen('http://my.njupt.edu.cn/index.do').read()
print result



请大神帮忙看一下,谢谢。






加载中
0
SupNatural
SupNatural

action是/authserver/login?service=http://my.njupt.edu.cn/login.do,不是http://my.njupt.edu.cn/login.do呀。

而且看来http://my.njupt.edu.cn/login.do用了oauth,建议用浏览器的开发者工具跟踪一下登录过程中提交的每个页面。

w
wuzheng_1994
回复@SupNatural : 谢谢您的回复,问题已解决
返回顶部
顶部