首页 > python登录CSDN失败!

python登录CSDN失败!

这几天刚接触python,然后想写一个python登录csdn。
http请求头:

GET /ajax/accounthandler.ashx?t=log&u=用户名&p=密码&remember=0&f=http%3A%2F%2Fwww.csdn.net%2F&rand=0.45487874305576215 HTTP/1.1

Host: passport.csdn.net

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0

Accept: */*

Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

X-Requested-With: XMLHttpRequest

Referer: https://passport.csdn.net/account/loginbox?callback=logined&hidethird=1&from=http%3a%2f%2fwww.csdn.net%2f

Cookie: __utma=17226283.47404085.1384827908.138482908.138521946.2; __utmz=1722623.138487908.1.1.utmcsr=(direct)|utmcmd=(none); uuid_tt_dd=-5371506010083293_20131119; UN=用户名; __utmb=172262.2.10.138212946; __utmc=1226283; pvg=mwpxe

Connection: keep-alive

Python代码

# -*- coding: utf-8 -*-
import sys
import urllib
import urllib2
import cookielib
import httplib

#定义需要进行发送的数据
params = urllib.urlencode({ 'f':'http://www.csdn.net/',
                            'p':'密码',
                            'rand':'0.45487874305576215',
                            'remember':'0',
                            't':'log',
                            'u':'用户名'
                           })

#定义一些文件头
headers = {"Content-Type":"application/json; charset=utf-8",
           "Connection":"Keep-Alive",
           "Referer":"https://passport.csdn.net/account/loginbox?callback=logined&hidethird=1&from=http%3a%2f%2fwww.csdn.net%2f"}

#与网站构建一个连接
conn = httplib.HTTPConnection("passport.csdn.net")

#开始进行数据提交   同时也可以使用get进行
conn.request(method="get",url="/ajax/accounthandler.ashx",body=params,headers=headers)
print conn.request
#返回处理后的数据
response = conn.getresponse()

#判断是否提交成功
if response.status == 302:
    print "发布成功!^_^!"
else:
    print "发布失败\^0^/"
#关闭连接
conn.close();

执行后,始终无法成功,希望,大神帮忙找下原因!


刚刚试了下,以下代码可以登录成功!
还望高手帮忙指点下,看有没有其他方式可以实现的!

url="http://passport.csdn.net/ajax/accounthandler.ashx?t=log&u=用户名&p=密码&remember=0&f=http%3A%2F%2Fwww.csdn.net%2F&rand=0.7234140924664091"
request = urllib2.Request(url)
request.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0")
request.add_header("Host","passport.csdn.net")
request.add_header("Accept","*/*")
request.add_header("Accept-Language","zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3")
request.add_header("Accept-Encoding","gzip, deflate")
request.add_header("X-Requested-With","XMLHttpRequest")
request.add_header("Referer","https://passport.csdn.net/account/loginbox?callback=logined&hidethird=1&from=http%3a%2f%2fwww.csdn.net%2f")
request.add_header("Connection","keep-alive")
f = urllib2.urlopen(request)
print f.read()

多谢“weakish ”的指点,使用requests模块之后的代码如下:

import requests

def login(username,password):
    #get参数
    payload = {'u': username,'p': password,'t':'log','rember':0,'f':'http://www.csdn.net'}
    url="http://passport.csdn.net/ajax/accounthandler.ashx"
    #http请求头
    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0",
               "Host":"passport.csdn.net",
               "Accept":"*/*",
               "Accept-Language":"zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3",
               "Accept-Encoding":"gzip, deflate",
               "X-Requested-With":"XMLHttpRequest",
               "Referer":"https://passport.csdn.net/account/loginbox?callback=logined&hidethird=1&from=http%3a%2f%2fwww.csdn.net%2f",
               "Connection":"keep-alive"
               }
    r = requests.get(url,params = payload,headers=headers)
    print r.text
【热门文章】
【热门文章】