一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Python爬蟲番外篇之關(guān)于登錄

 文炳春秋 2020-09-08

常見的登錄方式有以下兩種:

  1. 查看登錄頁面,csrf,cookie;授權(quán);cookie
  2. 直接發(fā)送post請求,獲取cookie

上面只是簡單的描述,下面是詳細(xì)的針對兩種登錄方式的時候爬蟲的處理方法

第一種情況

這種例子其實也比較多,現(xiàn)在很多網(wǎng)站的登錄都是第一種的方法,這里通過以github為例子:

分析頁面

獲取authenticity_token信息

我們都知道登錄頁面這里都是一個form表單提交,我可以可以通過谷歌瀏覽器對其進(jìn)行分析

如上圖我們找到了這個token信息
所以我們在登錄之前應(yīng)該先通過代碼訪問這個登錄頁面獲取這個authenticity_token信息

獲取登陸頁面的cookie信息

set-cookie這里是登錄頁面的cookie

分析登錄包獲取提交地址

當(dāng)我們輸入用戶名和密碼之后點擊提交,我們可以從包里找到如上圖的地址,就是post請求提交form的信息
請求的地址:"utf8":"?",
"authenticity_token":“KM6Q0mM9FtI95wYsI/WU3BnaMbYrmV60c0YTQlZjBuAuYa193LP2Gd8BTCmQBSFvPFZRlk3/1TFOnOgGUdy7Ig==”,
"login":"

從這里我們也可以看出提交參數(shù)中的“authenticity_token”,而這個參數(shù)就是需要我們從登陸頁面先獲取到。
當(dāng)我們登錄成功后:

再次訪問github,這個時候cookie里就增加了兩個cookie信息,而這個信息是登錄后在增加的信息
所以如果我們想要通過程序登錄,我們就需要在登錄成功后再次獲取cookie信息
然后通過這個cookie去訪問我們github的其他信息例如我們的個人信息設(shè)置頁面:
https://github.com/settings/profile

代碼實現(xiàn)

下面代碼實現(xiàn)了登錄并訪問https://github.com/settings/repositories

復(fù)制代碼
import requests
from bs4 import BeautifulSoup

Base_URL = "https://github.com/login"
Login_URL = "https://github.com/session"

def get_github_html(url):
    '''
    這里用于獲取登錄頁的html,以及cookie
    :param url: https://github.com/login
    :return: 登錄頁面的HTML,以及第一次的cooke
    '''
    response = requests.get(url)
    first_cookie = response.cookies.get_dict()
    return response.text,first_cookie



def get_token(html):
    '''
    處理登錄后頁面的html
    :param html:
    :return: 獲取csrftoken
    '''
    soup = BeautifulSoup(html,'lxml')
    res = soup.find("input",attrs={"name":"authenticity_token"})
    token = res["value"]
    return token


def gihub_login(url,token,cookie):
    '''
    這個是用于登錄
    :param url: https://github.com/session
    :param token: csrftoken
    :param cookie: 第一次登錄時候的cookie
    :return: 返回第一次和第二次合并后的cooke
    '''

    data= {
        "commit": "Sign in",
        "utf8":"?",
        "authenticity_token":token,
        "login":"你的github賬號",
        "password":"*****"
    }
    response = requests.post(url,data=data,cookies=cookie)
    print(response.status_code)
    cookie = response.cookies.get_dict()
    #這里注釋的解釋一下,是因為之前github是通過將兩次的cookie進(jìn)行合并的
    #現(xiàn)在不用了可以直接獲取就行
    # cookie.update(second_cookie)
    return cookie


if __name__ == '__main__':
    html,cookie = get_github_html(Base_URL)
    token = get_token(html)
    cookie = gihub_login(Login_URL,token,cookie)
    response = requests.get("https://github.com/settings/repositories",cookies=cookie)
    print(response.text)
復(fù)制代碼

第二種情況

這里通過伯樂在線為例子,這個相對于第一種就比較簡單了,沒有太多的分析過程直接發(fā)送post請求,然后獲取cookie,通過cookie去訪問其他頁面,下面直接是代碼實現(xiàn)例子:
http://www./bookmark/ 這個地址是只有登錄之后才能訪問的頁面,否則會直接返回登錄頁面

這里說一下:http://www./wp-admin/admin-ajax.php是登錄的請求地址這個可以在抓包里可以看到


復(fù)制代碼
import requests
def login():
    url = "http://www./wp-admin/admin-ajax.php"
    data = {
        "action": "user_login",
        "user_login":"zhaofan1015",
        "user_pass": '******',
    }
    response = requests.post(url,data)
    cookie = response.cookies.get_dict()
    print(cookie)
    url2 ="http://www./bookmark/"
    response2 = requests.get(url2,cookies=cookie)
    print(response2.text)

login() 
復(fù)制代碼

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    丰满的人妻一区二区三区| 日韩精品在线观看一区| 91日韩欧美在线视频| 久久精品国产亚洲av麻豆| 久久久精品区二区三区| 一区二区三区日本高清| 日韩成人h视频在线观看| 高潮日韩福利在线观看| 亚洲国产精品久久综合网| 国产又粗又硬又长又爽的剧情| 超薄丝袜足一区二区三区| 国产毛片av一区二区三区小说| 欧美日韩精品一区二区三区不卡| 九九九热视频免费观看| 国产午夜精品福利免费不| 日韩高清中文字幕亚洲| 亚洲精品一区二区三区免| av在线免费观看一区二区三区| 殴美女美女大码性淫生活在线播放| 久久热九九这里只有精品| 国产丝袜女优一区二区三区| 国产二级一级内射视频播放| 久草视频这里只是精品| 久久99夜色精品噜噜亚洲av | 九九热最新视频免费观看| 国产人妻熟女高跟丝袜| 亚洲午夜精品视频在线| 女生更色还是男生更色| 免费精品一区二区三区| 黄片美女在线免费观看| 日韩不卡一区二区三区色图| 大伊香蕉一区二区三区| 亚洲美女国产精品久久| 国产激情国产精品久久源| 女人高潮被爽到呻吟在线观看| 久久国产精品热爱视频| 久热香蕉精品视频在线播放| 亚洲精品中文字幕熟女| 又大又长又粗又黄国产| 99久久精品久久免费| 一区二区三区国产日韩|