• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

使用python模拟登陆百度

python 搞代码 4年前 (2022-01-09) 31次浏览 已收录 0个评论

使用python模拟登陆百度

#!/usr/bin/python# -*- coding: utf-8 -*-   import re;import cookielib;import urllib;import urllib2;import optparse;   #------------------------------------------------------------------------------# check all cookies in cookiesDict is exist in cookieJar or notdef checkAllCookiesExist(cookieNameList, cookieJar) :    cookiesDict = {};    for eachCookieName in cookieNameList :        cookiesDict[eachCookieName] = False;       allCookieFound = True;    for cookie in cookieJar :        if(cookie.name in cookiesDict) :            cookiesDict[cookie.name] = True;       for eachCookie in cookiesDict.keys() :        if(not cookiesDict[eachCookie]) :            allCookieFound = False;            break;       return allCookieFound;   #------------------------------------------------------------------------------# just for print delimiterdef printDelimiter():   <span>本文来源gaodai#ma#com搞*!代#%^码网5</span> print '-'*80;   #------------------------------------------------------------------------------# main function to emulate login baidudef emulateLoginBaidu():    print "Function: Used to demostrate how to use Python code to emulate login baidu main page: http://www.baidu.com/";    print "Usage: emulate_login_baidu_python.py -u yourBaiduUsername -p yourBaiduPassword";    printDelimiter();       # parse input parameters    parser = optparse.OptionParser();    parser.add_option("-u","--username",action="store",type="string",default='',dest="username",help="Your Baidu Username");    parser.add_option("-p","--password",action="store",type="string",default='',dest="password",help="Your Baidu password");    (options, args) = parser.parse_args();    # export all options variables, then later variables can be used    for i in dir(options):        exec(i + " = options." + i);       printDelimiter();    print "[preparation] using cookieJar & HTTPCookieProcessor to automatically handle cookies";    cj = cookielib.CookieJar();    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj));    urllib2.install_opener(opener);       printDelimiter();    print "[step1] to get cookie BAIDUID";    baiduMainUrl = "http://www.baidu.com/";    resp = urllib2.urlopen(baiduMainUrl);    #respInfo = resp.info();    #print "respInfo=",respInfo;    for index, cookie in enumerate(cj):        print '[',index, ']',cookie;       printDelimiter();    print "[step2] to get token value";    getapiUrl = "https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=true";    getapiResp = urllib2.urlopen(getapiUrl);    #print "getapiResp=",getapiResp;    getapiRespHtml = getapiResp.read();    #print "getapiRespHtml=",getapiRespHtml;    #bdPass.api.params.login_token='5ab690978812b0e7fbbe1bfc267b90b3';    foundTokenVal = re.search("bdPass\.api\.params\.login_token='(?P\w+)';", getapiRespHtml);    if(foundTokenVal):        tokenVal = foundTokenVal.group("tokenVal");        print "tokenVal=",tokenVal;           printDelimiter();        print "[step3] emulate login baidu";        staticpage = "http://www.baidu.com/cache/user/html/jump.html";        baiduMainLoginUrl = "https://passport.baidu.com/v2/api/?login";        postDict = {            #'ppui_logintime': "",            'charset'       : "utf-8",            #'codestring'    : "",            'token'         : tokenVal, #de3dbf1e8596642fa2ddf2921cd6257f            'isPhone'       : "false",            'index'         : "0",            #'u'             : "",            #'safeflg'       : "0",            'staticpage'    : staticpage, #http%3A%2F%2Fwww.baidu.com%2Fcache%2Fuser%2Fhtml%2Fjump.html            'loginType'     : "1",            'tpl'           : "mn",            'callback'      : "parent.bdPass.api.login._postCallback",            'username'      : username,            'password'      : password,            #'verifycode'    : "",            'mem_pass'      : "on",        };        postData = urllib.urlencode(postDict);        # here will automatically encode values of parameters        # such as:        # encode http://www.baidu.com/cache/user/html/jump.html into http%3A%2F%2Fwww.baidu.com%2Fcache%2Fuser%2Fhtml%2Fjump.html        #print "postData=",postData;        req = urllib2.Request(baiduMainLoginUrl, postData);        # in most case, for do POST request, the content-type, is application/x-www-form-urlencoded        req.add_header('Content-Type', "application/x-www-form-urlencoded");        resp = urllib2.urlopen(req);        #for index, cookie in enumerate(cj):        #    print '[',index, ']',cookie;        cookiesToCheck = ['BDUSS', 'PTOKEN', 'STOKEN', 'SAVEUSERID'];        loginBaiduOK = checkAllCookiesExist(cookiesToCheck, cj);        if(loginBaiduOK):            print "+++ Emulate login baidu is OK, ^_^";        else:            print "--- Failed to emulate login baidu !"    else:        print "Fail to extract token value from html=",getapiRespHtml;   if __name__=="__main__":    emulateLoginBaidu();

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用python模拟登陆百度
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址