Python模拟登陆

模拟人人登陆

#encoding=utf-8
import urllib2
import urllib
import cookielib
def renrenBrower(url,user,password):
    #登陆页面,可以通过抓包工具分析获得,如fiddler,wireshark
    login_page = "http://www.renren.com/PLogin.do"
    try:
        #获得一个cookieJar实例
        cj = cookielib.CookieJar()
        #cookieJar作为参数,获得一个opener的实例
        opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
        #伪装成一个正常的浏览器,避免有些web服务器拒绝访问。
        opener.addheaders = [('User-agent','Mozilla/5.0 (Windows NT 6.3; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0')]
        #生成Post数据,含有登陆用户名密码。
        data = urllib.urlencode({"email":user,"password":password})
        #以post的方法访问登陆页面,访问之后cookieJar会自定保存cookie
        opener.open(login_page,data)
        #以带cookie的方式访问页面
        op=opener.open(url)
        #读取页面源码
        data= op.read()
        return data
    except Exception,e:
        print "aaaa"
#访问某用户的个人主页,其实这已经实现了人人网的签到功能。http://blog.chinaunix.net/uid-25979788-id-3481639.html
print renrenBrower("http://www.renren.com/home","1574038203@qq.com","123456")

分析下:
模拟登陆的时候是post请求,提交表单的地址和人人界面登陆地址是不一样的,实际是人人界面的登陆地址,也就是wwww.renren.cm.你输入你的信息以后它会自动跳转到
http://www.renren.com/PLogin.do
那么我们是怎么知道表单提交地址呢?
1:查看网站代码
2:查看表单
提前表单的需要的数据
如:



form中间就是整个表单
可以看箭头指向的地方:
post请求需要username,password,origURL,domain,key_id,captcha_type等,但是后面三个是不变的,不需要加上去,只要前两个就行
我模拟csdn登陆的时候,五个参数,出去username和paassword以外有两个参数是动态变化的,我静态赋值,一直登不上,郁闷,记住了如果要动态获取的一定要动态获取


好,那我们来看看模拟csdn登陆的话


下面两个箭头指向的两个数据的value是动态变化的,所以如果要模拟登陆的话,需要动态获取这个值

占时我还不会,贴个我的错误代码,有大神能帮我改改,怎么动态获取这两个值
import urllib
import urllib2
import cookielib
 
filename = 'cookie1.txt'
#声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件
cookie = cookielib.MozillaCookieJar(filename)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
opener.addheaders = [('User-agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)')]
postdata = urllib.urlencode({
            "username":"xxxxxxxx,
            "password":"xxxxxxxx",
            "lt":"LT-381024-pHXsjYjSgZ2aR9P4QrG9YQ6rneqlhg",
            "execution" : "e20s1",
            "_eventId" : "submit"  
    
        })
#登录的URL
loginUrl = 'https://passport.csdn.net/account/login 

'
#模拟登录,并把cookie保存到变量
result = opener.open(loginUrl,postdata)
#保存cookie到cookie.txt中
cookie.save(ignore_discard=True, ignore_expires=True)
#利用cookie请求访问另一个网址
gradeUrl = 'http://write.blog.csdn.net/postlist 

'
#请求访问查询网址
result = opener.open(gradeUrl)
print result.read()


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值