biliLogin

package module
v0.0.0-...-be6eb67 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 13, 2022 License: GPL-3.0 Imports: 16 Imported by: 0

README

Bilibili 登录

基于 GO 语言编写的登录仓库, 开箱即用

使用示例

func main() {
    // 配置文件
	config := &biliLogin.Login{
		Cid:   1,                     // 地区
		Tel:   114514,                // 电话号码
		Buvid: biliLogin.FakeBuvid(), // buvid, 扫码方式必要, 这里随机生成一个
		Phone: "Pixel 7",             // 手机型号
		OsVer: "13.0",                // 安卓系统版本
	}
	
	// 创建一个登录服务
	login := biliLogin.New(config)
	
	// cookies 格式
	userInfo := &biliLogin.UserInfo{}
	
	// APP 短信登录
	userInfo = login.AppSMS()

	// TV 端扫码登录
	//userInfo = login.TvQR()
}

复杂一点的使用

package main

import (
	"encoding/json"
	"github.com/KaguraMika/bili-login"
	"log"
	"os"
	"time"
)

func main() {
	// 文件名
	fileName := "login.json"

	// 读取文件, 无文件则生成
	_, err := os.Stat(fileName)
	if err != nil {
		log.Println("File Not Exist.")
		_, err = os.Create(fileName)
		if err != nil {
			log.Println(err)
		}
	}

	// 配置文件
	config := &biliLogin.Login{
		Cid:   1,                     // 地区
		Tel:   114514,                // 电话号码
		Buvid: biliLogin.FakeBuvid(), // buvid, 扫码方式必要, 这里随机生成一个
		Phone: "Pixel 7",             // 手机型号
		OsVer: "13.0",                // 安卓系统版本
	}

	// 创建一个登录服务
	login := biliLogin.New(config)

	// cookies 格式
	userInfo := &biliLogin.UserInfo{}

	// APP 短信登录
	userInfo = login.AppSMS()

	// TV 端扫码登录
	//userInfo = login.TvQR()

	// 写入文件
	result, err := json.MarshalIndent(userInfo, "", " ")
	checkErr(err)

	err = os.WriteFile(fileName, result, 644)
	checkErr(err)

	// 设置cookies
	cookies := biliLogin.Cookies{
		SESSDATA:        userInfo.Cookies.SESSDATA,
		BiliJct:         userInfo.Cookies.BiliJct,
		DedeUserID:      userInfo.Cookies.DedeUserID,
		DedeUserIDCkMd5: userInfo.Cookies.DedeUserIDCkMd5,
		Sid:             userInfo.Cookies.Sid,
	}

	// 登录验证
	biliLogin.Verify(cookies)

	time.Sleep(5 * time.Second)

	// 退出登录
	login.AppLogout(cookies)
}

func checkErr(err error) {
	if err != nil {
		log.Fatalln(err)
	}
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FakeBuvid

func FakeBuvid() string

func Verify

func Verify(c Cookies)

Types

type AppSMSCookies

type AppSMSCookies struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
	Ttl     int    `json:"ttl"`
	Data    struct {
		Status    int    `json:"status"`
		Message   string `json:"message"`
		Url       string `json:"url"`
		TokenInfo struct {
			Mid          int    `json:"mid"`
			AccessToken  string `json:"access_token"`
			RefreshToken string `json:"refresh_token"`
			ExpiresIn    int    `json:"expires_in"`
		} `json:"token_info"`
		CookieInfo struct {
			Cookies []struct {
				Name     string `json:"name"`
				Value    string `json:"value"`
				HttpOnly int    `json:"http_only"`
				Expires  int    `json:"expires"`
				Secure   int    `json:"secure"`
			} `json:"cookies"`
			Domains []string `json:"domains"`
		} `json:"cookie_info"`
		Sso []string `json:"sso"`
	} `json:"data"`
}

type AppSMSInfo

type AppSMSInfo struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
	Ttl     int    `json:"ttl"`
	Data    struct {
		IsNew        interface{} `json:"is_new"`
		CaptchaKey   string      `json:"captcha_key"`
		RecaptchaUrl string      `json:"recaptcha_url"`
	} `json:"data"`
}

type AppVersion

type AppVersion struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
	Ttl     int    `json:"ttl"`
	Data    []struct {
		Plat    int    `json:"plat"`
		Desc    string `json:"desc"`
		Version string `json:"version"`
		Build   int    `json:"build"`
		Ptime   int    `json:"ptime"`
	} `json:"data"`
}

type AuthCode

type AuthCode struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
	Ttl     int    `json:"ttl"`
	Data    struct {
		Url      string `json:"url"`
		AuthCode string `json:"auth_code"`
	} `json:"data"`
}

type Cookies

type Cookies struct {
	DedeUserID      string `json:"DedeUserID"`
	DedeUserIDCkMd5 string `json:"DedeUserID__ckMd5"`
	SESSDATA        string `json:"SESSDATA"`
	BiliJct         string `json:"bili_jct"`
	Sid             string `json:"sid"`
}

type Login

type Login struct {
	Cid int
	Tel int

	Buvid      string
	OsVer      string
	Phone      string
	TvBuild    string
	TvVersion  string
	AppBuild   string
	APPVersion string
}

func New

func New(login *Login) *Login

func (*Login) AppLogout

func (login *Login) AppLogout(c Cookies)

AppLogout 退出登录

func (*Login) AppSMS

func (login *Login) AppSMS() *UserInfo

func (*Login) TvHeaders

func (login *Login) TvHeaders(req *http.Request) *http.Request

func (*Login) TvQR

func (login *Login) TvQR() *UserInfo

TvQR TV 端扫码登录方法

type Logout

type Logout struct {
	Code   int  `json:"code"`
	Status bool `json:"status"`
	Ts     int  `json:"ts"`
	Data   struct {
		RedirectUrl string `json:"redirectUrl"`
	} `json:"data"`
}
type Nav struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
	Ttl     int    `json:"ttl"`
	Data    struct {
		IsLogin       bool   `json:"isLogin"`
		EmailVerified int    `json:"email_verified"`
		Face          string `json:"face"`
		FaceNft       int    `json:"face_nft"`
		FaceNftType   int    `json:"face_nft_type"`
		LevelInfo     struct {
			CurrentLevel int `json:"current_level"`
			CurrentMin   int `json:"current_min"`
			CurrentExp   int `json:"current_exp"`
			NextExp      int `json:"next_exp"`
		} `json:"level_info"`
		Mid            int `json:"mid"`
		MobileVerified int `json:"mobile_verified"`
		Money          int `json:"money"`
		Moral          int `json:"moral"`
		Official       struct {
			Role  int    `json:"role"`
			Title string `json:"title"`
			Desc  string `json:"desc"`
			Type  int    `json:"type"`
		} `json:"official"`
		OfficialVerify struct {
			Type int    `json:"type"`
			Desc string `json:"desc"`
		} `json:"officialVerify"`
		Pendant struct {
			Pid               int    `json:"pid"`
			Name              string `json:"name"`
			Image             string `json:"image"`
			Expire            int    `json:"expire"`
			ImageEnhance      string `json:"image_enhance"`
			ImageEnhanceFrame string `json:"image_enhance_frame"`
		} `json:"pendant"`
		Scores       int    `json:"scores"`
		Uname        string `json:"uname"`
		VipDueDate   int64  `json:"vipDueDate"`
		VipStatus    int    `json:"vipStatus"`
		VipType      int    `json:"vipType"`
		VipPayType   int    `json:"vip_pay_type"`
		VipThemeType int    `json:"vip_theme_type"`
		VipLabel     struct {
			Path                  string `json:"path"`
			Text                  string `json:"text"`
			LabelTheme            string `json:"label_theme"`
			TextColor             string `json:"text_color"`
			BgStyle               int    `json:"bg_style"`
			BgColor               string `json:"bg_color"`
			BorderColor           string `json:"border_color"`
			UseImgLabel           bool   `json:"use_img_label"`
			ImgLabelUriHans       string `json:"img_label_uri_hans"`
			ImgLabelUriHant       string `json:"img_label_uri_hant"`
			ImgLabelUriHansStatic string `json:"img_label_uri_hans_static"`
			ImgLabelUriHantStatic string `json:"img_label_uri_hant_static"`
		} `json:"vip_label"`
		VipAvatarSubscript int    `json:"vip_avatar_subscript"`
		VipNicknameColor   string `json:"vip_nickname_color"`
		Vip                struct {
			Type       int   `json:"type"`
			Status     int   `json:"status"`
			DueDate    int64 `json:"due_date"`
			VipPayType int   `json:"vip_pay_type"`
			ThemeType  int   `json:"theme_type"`
			Label      struct {
				Path                  string `json:"path"`
				Text                  string `json:"text"`
				LabelTheme            string `json:"label_theme"`
				TextColor             string `json:"text_color"`
				BgStyle               int    `json:"bg_style"`
				BgColor               string `json:"bg_color"`
				BorderColor           string `json:"border_color"`
				UseImgLabel           bool   `json:"use_img_label"`
				ImgLabelUriHans       string `json:"img_label_uri_hans"`
				ImgLabelUriHant       string `json:"img_label_uri_hant"`
				ImgLabelUriHansStatic string `json:"img_label_uri_hans_static"`
				ImgLabelUriHantStatic string `json:"img_label_uri_hant_static"`
			} `json:"label"`
			AvatarSubscript    int    `json:"avatar_subscript"`
			NicknameColor      string `json:"nickname_color"`
			Role               int    `json:"role"`
			AvatarSubscriptUrl string `json:"avatar_subscript_url"`
			TvVipStatus        int    `json:"tv_vip_status"`
			TvVipPayType       int    `json:"tv_vip_pay_type"`
		} `json:"vip"`
		Wallet struct {
			Mid           int `json:"mid"`
			BcoinBalance  int `json:"bcoin_balance"`
			CouponBalance int `json:"coupon_balance"`
			CouponDueTime int `json:"coupon_due_time"`
		} `json:"wallet"`
		HasShop        bool   `json:"has_shop"`
		ShopUrl        string `json:"shop_url"`
		AllowanceCount int    `json:"allowance_count"`
		AnswerStatus   int    `json:"answer_status"`
		IsSeniorMember int    `json:"is_senior_member"`
	} `json:"data"`
}

type Statistics

type Statistics struct {
	AppId    int    `json:"appId"`
	Platform int    `json:"platform"`
	Version  string `json:"version"`
	Abtest   string `json:"abtest"`
}

type TvQrCookies

type TvQrCookies struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
	Ttl     int    `json:"ttl"`
	Data    struct {
		IsNew        bool   `json:"is_new"`
		Mid          int    `json:"mid"`
		AccessToken  string `json:"access_token"`
		RefreshToken string `json:"refresh_token"`
		ExpiresIn    int    `json:"expires_in"`
		TokenInfo    struct {
			Mid          int    `json:"mid"`
			AccessToken  string `json:"access_token"`
			RefreshToken string `json:"refresh_token"`
			ExpiresIn    int    `json:"expires_in"`
		} `json:"token_info"`
		CookieInfo struct {
			Cookies []struct {
				Name     string `json:"name"`
				Value    string `json:"value"`
				HttpOnly int    `json:"http_only"`
				Expires  int    `json:"expires"`
			} `json:"cookies"`
			Domains []string `json:"domains"`
		} `json:"cookie_info"`
		Sso []string `json:"sso"`
	} `json:"data"`
}

type TvVersion

type TvVersion struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
	Ttl     int    `json:"ttl"`
	Data    struct {
		IsUpgrade int    `json:"is_upgrade"`
		Title     string `json:"title"`
		Desc      string `json:"desc"`
		IsForce   int    `json:"is_force"`
		IsPush    int    `json:"is_push"`
		Url       string `json:"url"`
		Hash      string `json:"hash"`
		Size      int    `json:"size"`
		Ver       string `json:"ver"`
		Build     int    `json:"build"`
	} `json:"data"`
}

type UserInfo

type UserInfo struct {
	Cookies      *Cookies `json:"cookies"`
	AccessToken  string   `json:"access_token"`
	RefreshToken string   `json:"refresh_token"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL