requests模擬登錄

常見的狀態碼php

code
說明
200 請求被成功處理
301/302 永久性重定向/臨時重定向
403 沒有權限訪問
404 表示沒有對應的資源
500 服務器錯誤
503 服務器停機或正在維護

 

  簡單的模擬登錄python

##簡單的模擬登錄
#好比提取到的請求信息:
# Headers:
#     Request URL:https://passport.mafengwo.cn/login/
#     Request Method:POST
#     origin:https://passport.mafengwo.cn
#     referer:https://passport.mafengwo.cn/
#     User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/63.0.3239.132 Safari/537.36
#
# Form Data:
#     passport:123456
#     password:1235
#
import requests

def zhihu_lo(account,password):
    ##
    postUrl = 'https://zhihu.com/login'
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/63.0.3239.132 Safari/537.36',
        'referer':'https: // passport.mafengwo.cn /'##重定向的
    }
    postData = {
        'passport':account,
        'password':password
    }

    response = requests.post(postUrl,data=postData,headers=headers)

保存cookie信息

#好比提取到的請求信息:
# Headers:
#     Request URL:https://passport.mafengwo.cn/login/
#     Request Method:POST
#     origin:https://passport.mafengwo.cn
#     referer:https://passport.mafengwo.cn/
#     User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/63.0.3239.132 Safari/537.36
#
# Form Data:
#     passport:123456
#     password:1235
#
import requests

def _lo(account,password):
    ##

    try:
        import cookielib  ##這裏是使用的python2的代碼
    except:
        import http.cookiejar as cookielib  # 這裏是使用python3的代碼
    ##以上的這個嘗試只是兼容python2和python3而已,也能夠分開只寫python3的


    #session表明某一次鏈接
    mysession = requests.session()



    # 由於原始的session.cookies 沒有save()方法,因此須要用到cookielib中的方法LWPCookieJar,這個類實例化的cookie對象,就能夠直接調用save方法。
    mysession.cookies = cookielib.LWPCookieJar(filename='保存的文件名稱')



    postUrl = 'https://zhihu.com/login'
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/63.0.3239.132 Safari/537.36',
        'referer':'https: // passport.mafengwo.cn /'##重定向的
    }
    postData = {
        'passport':account,
        'password':password
    }
    #注意這裏和上面的發生了一點小變化哦
    response = mysession.post(postUrl,data=postData,headers=headers)

    #這一句的好處是,登錄後就把cookies保存在了文件中,之後登錄就從文件取出cookie就能夠了,不須要作重複的登錄
    #我這裏爲了好了解所有寫在了一個函數中了
    mysession.cookies.save()#

使用cookie登陸

#好比提取到的請求信息:
# Headers:
#     Request URL:https://passport.mafengwo.cn/login/
#     Request Method:POST
#     origin:https://passport.mafengwo.cn
#     referer:https://passport.mafengwo.cn/
#     User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/63.0.3239.132 Safari/537.36
#
# Form Data:
#     passport:123456
#     password:1235
#
import requests


#session表明某一次鏈接,也就是代替一下requests
mysession = requests.session()

# 由於原始的session.cookies 沒有save()方法,因此須要用到cookielib中的方法LWPCookieJar,這個類實例化的cookie對象,就能夠直接調用save方法。
mysession.cookies = cookielib.LWPCookieJar(filename='保存的文件名稱')
header = {
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/63.0.3239.132 Safari/537.36',
        'referer':'https: // passport.mafengwo.cn /'##重定向的
    }
def _lo(account,password):
    ##

    try:
        import cookielib  ##這裏是使用的python2的代碼
    except:
        import http.cookiejar as cookielib  # 這裏是使用python3的代碼
    ##以上的這個嘗試只是兼容python2和python3而已,也能夠分開只寫python3的



    postUrl = 'https://zhihu.com/login'

    postData = {
        'passport':account,
        'password':password
    }
    #注意這裏和上面的發生了一點小變化哦
    response = mysession.post(postUrl,data=postData,headers=headers)

    #這一句的好處是,登錄後就把cookies保存在了文件中,之後登錄就從文件取出cookie就能夠了,不須要作重複的登錄
    #我這裏爲了好了解所有寫在了一個函數中了
    mysession.cookies.save()#


def isLoginStart():
    routerUrl = 'http://zhihu.com/user.php'
    # 第一個是header,若是不設置,會返回500的錯誤
    # 第二個是allow_redirects,若是不設置,session訪問時,服務器返回302,
    # 而後session會自動重定向到登陸頁面,獲取到登陸頁面以後,變成200的狀態碼
    # allow_redirects = False  就是不容許重定向
    responses = mysession.get(routerUrl,headers = header,allow_redirects = False)

    if responses.status_code != 200:
        return False
    return True

if __name__ == '__main__':
    mysession.cookies.load()

    if isLoginStart != True:
        print("cookies已經失效,正在從新登錄")
        _lo(123456,1235)

    rep = mysession.get('http://zhihu.com/user.php',headers = header,allow_redirects = False)
    print(rep.status_code)
相關文章
相關標籤/搜索