python day2-爬蟲實現github登錄

来源:https://www.cnblogs.com/interpreter/archive/2019/08/12/python_Github.html

GitHub登錄 分析登錄頁面 開發者工具分析請求 從session請求分析得知: 1.請求的URL為:https://github.com/session 2.該請求為post請求,即需要上傳data表單,所以我們需要分析form-data 由form-data分析得知: 1.login:GitH ...

GitHub登錄

分析登錄頁面

開發者工具分析請求

從session請求分析得知:

1.請求的URL為:https://github.com/session

2.該請求為post請求,即需要上傳data表單,所以我們需要分析form-data

 

由form-data分析得知:

1.login:GitHub的賬號

2.password:GitHub的密碼

3.authenticity_token:每次請求時都發生變動

4.其餘參數沒有特殊的變動

因此需要分析authenticity_token的規律,經過分析源代碼得知:

在login頁面中存在該參數,且每次請求該頁面時該參數都發生變動

因此我們需要使用維持會話的方式抓取該參數

import requests

session = requests.Session()    #實例化,維持會話
url_login = 'https://github.com/login'
    response = session.get(url_login)
    #通過正則獲取token值
    authenticity_token = re.findall('name="authenticity_token" value="(.*?)" />',response.text)[0]
    print(authenticity_token)

當我們獲取該參數後,即可以代入form-data中完成登錄

附上全部代碼

import requests
import re

session = requests.Session()    #實例化,維持會話

def token():   
    url_login = 'https://github.com/login'
    response = session.get(url_login)
    #通過正則獲取token值
    authenticity_token = re.findall('name="authenticity_token" value="(.*?)" />',response.text)[0]
    return authenticity_token     #返回token值

def url_session(token):
    url = 'https://github.com/session'
    data = {
        'commit': 'Sign in',
        'utf8': '',
        'authenticity_token': token,     #authenticity_token參數
        'login': '輸入賬號',              #你的賬號
        'password': '輸入密碼',          #你的密碼
        'webauthn-support': 'supported',
        'required_field_852e': '',
        'timestamp': '1565616593723',
        'timestamp_secret': '850cb01230466a48f29899e2202265961cdcde8375c4ee69399cd9e9805e1ede',
    }
    response = session.post(url,data=data)  #傳入form-data表單
    return response.text   #返回源碼

def save_github(response_text):  
    with open('github.html','w',encoding='utf-8') as fp:
        fp.write(response_text)

if __name__ == '__main__':
    token = token()   #獲取authenticity_token參數
    response_text = url_session(token)    #獲取網頁源碼
    save_github(response_text)    #把爬取到的源碼保存為html格式

 


您的分享是我們最大的動力!

更多相關文章
  • 伺服器數量過多,每次採用ip+埠 輸入密碼的方式登錄比較繁瑣,就採用了免密碼和埠登錄。 普通登錄方式: ssh p 27479 [email protected] 更換免密碼登錄: 本地操作: 本地的公鑰位置: ~/.ssh/id_rsa.pub ~/.ssh目錄下創建一個config文件, ...
  • 廣告檢索服務 功能介紹 媒體方(手機APP打開的展示廣告,走在路上看到的大屏幕廣告等等) 請求數據對象實現 從上圖我們可以看出,在媒體方向我們的廣告檢索系統發起請求的時候,請求中會有很多的請求參數信息,他們分為了三個部分,我們來編碼封裝這幾個參數對象信息以及我們請求本身的信息。Let's code. ...
  • Filter 過濾器 概念:當訪問伺服器的某些資源時,過濾器可以將請求先進行攔截,在完成了一定的特殊功能後,可以讓此請求繼續執行。 一. 實現步驟 1、實現Filter介面 2、重寫方法 3、配置web.xml 二. 過濾器的url配置 完全匹配:攔截指定資源 擴展名匹配: .擴展名,攔截指定尾碼的 ...
  • xl_echo編輯整理,歡迎轉載,轉載請聲明文章來源。歡迎添加echo微信(微信號:t2421499075)交流學習。 百戰不敗,依不自稱常勝,百敗不頹,依能奮力前行。——這才是真正的堪稱強大!! 參考文章列表: "Java併發編程:Synchronized底層優化(偏向鎖、輕量級鎖)" "輕量級鎖 ...
  • SpringApplication 使用靜態方法 使用構造器 使用 builder 1、失敗分析器 初始化實現了 FailureAnalyzer 介面的失敗分析器,可以在啟動失敗時,列印錯誤日誌和解決操作方法。比如啟動埠被占用時列印如下日誌: 2、自定義 Banner 可以將 banner.txt ...
一周排行
  • 1. RSA加密與解密 -- 使用公鑰加密、私鑰解密 測試: RSATool myRSA = new RSATool(); Dictionary<string, string> dictK = new Dictionary<string, string>(); dictK = myRSA.GetKe ...
  • 前提 入行已經7,8年了,一直想做一套漂亮點的自定義控制項,於是就有了本系列文章。 GitHub:https://github.com/kwwwvagaa/NetWinformControl 碼雲:https://gitee.com/kwwwvagaa/net_winform_custom_contr ...
  • 1. 在WPF怎麼在UI上添加超級鏈接 這篇文章的目的是介紹怎麼在WPF里創建自定義的HyperlinkButton控制項。很神奇的,WPF居然連HyperlinkButton都沒有,不過它提供了另一種方式用於在UI上添加超級鏈接: 如果需要在超級鏈接里放圖片或其它東西,代碼如下: 這真是很怪,為什麼 ...
  • 系統環境: Windows + .Net Framework 4.0 問題描述: C#連接FTP下載文件時,在部分電腦上有異常報錯,在一部分電腦上是正常的;異常報錯的信息:System.InvalidOperationException: The requested FTP command is n ...
  • 話不多說,上圖: 整體項目結構如圖所示,我的設計初衷是基於.netCore + DI + Vue 打造一個適合初學者的簡捷開發框架。 架構模型採用基於RESTful API風格的前後臺分離框架,總體分為五層:表示層(前端UI)、交互層、業務層、數據訪問層、數據存儲層。 項目中用到的技術如下圖所示: ...
  • 前提 入行已經7,8年了,一直想做一套漂亮點的自定義控制項,於是就有了本系列文章。 GitHub:https://github.com/kwwwvagaa/NetWinformControl 碼雲:https://gitee.com/kwwwvagaa/net_winform_custom_contr ...
  • 初學者經常碰到的,即獲取HTML元素集合,迴圈給元素添加事件。在事件響應函數中(event handler)獲取對應的索引。但每次獲取的都是最後一次迴圈的索引。原因是初學者並未理解JavaScript的閉包特性。 1. <!DOCTYPE HTML> 2. <html> 3. <head> 4. < ...
  • 摘要 本文將介紹如何通過VS2019創建Xamarin.Forms應用程式,以及如何進行調試。 前言 本文介紹Xamarin.Froms應用程式的創建和調試。 開發環境 1.Visual Studio 2019 2.Xamarin.Forms 3.6.0.344457 創建 1.打開VS2019,選 ...
  • 本次應用DevExpress和C#語言製作了一個批量添加水印的程式,看界面效果圖: 界面中既可以進行文字水印添加,也可以圖片水印添加,同時還可以對水印的位置進行設置,比較實用! 文字水印的具體添加情況,看圖: 還可以文字的預覽: 整個文字水印的預覽: 同時圖片的水印預覽: 最後顯示下圖片的水印效果: ...
  • 一、Swagger是什麼 Swagger 是一款RESTFUL介面的、基於YAML、JSON語言的文檔線上自動生成、代碼自動生成的工具。 二、如何在項目中加入Swagger Swagger安裝引用 右鍵Web項目依賴項>管理NuGet程式包>在搜索框輸入"Swashbuckle.AspNetCore ...
x