Biblibili 영상 투고 인터페이스 분석 및 Python 으로 자동 투고 기능 구현

B 역 영상 발표 인터페이스 분석
항목 주소:https://gitee.com/nbody1996/bilibili_video_uploader
비디오 주소:https://www.bilibili.com/video/BV1qt4y1v76u/
로그 인 쿠키 가 져 오기
요청 은 로그 인 성공 후 키 쿠키 를 가지 고 있어 야 B 사이트 배경 에서 로그 인 한 상태 로 여 겨 집 니 다.
연구 에 의 하면 다음 과 같은 두 가 지 는 필요 하 다.
  • SESSDATA(session 세 션 cookies,로그 인 증명서 에 해당)
  • bili_jct(CSRF 공격 방어)
  • 이 두 가 지 는 모두 브 라 우 저 개발 자 도구(F12)에서 볼 수 있 습 니 다.예 를 들 어 구 글 브 라 우 저 에서:

    그 다음 에 이 두 값 을 복사 하면 다음 요청 에서 cookies 가 이 두 값 을 가 져 오 면 로그 인 상 태 를 유지 할 수 있 습 니 다.
    해결 방안:
  • 쿠키 설정 가능requests.Session.cookies = requests.utils.cookiejar_from_dict,추 후 요청 세 션 에서 유지
  • UA 설정 가능requests.Session.headers = {'User-Agent':'???'},추 후 요청 세 션 에서 유지
  • 사전 업로드
    요청 방법:  GET요청 인터페이스:  https://member.bilibili.com/preupload요청 체:

    응답 체:

    요청 체 솔 루 션:
  • name 인 자 는os.path.basename또는pathlib.Path.name 에서 얻 을 수 있 습 니 다
  • size 인 자 는os.path.getsize또는pathlib.Path.stat().st_size에서 얻 을 수 있 습 니 다
  • step 1 영상 업로드 준비
    요청 방법:  POST요청 인터페이스:  https://upos-sz-upcdnbda2.bilivideo.com/[upos_uri][upos_uri]preupload 응답 체 중upos_uriupos://뒷부분 으로 교체 합 니 다.예 를 들 어https://upos-sz-upcdnbda2.bilivideo.com/ugcboss/m201010a23h35mci3cejzh2xe4a6gwq1.mp4요청 헤더:

    요청 체:

    응답 체:

    step 2 분할 업로드 영상
    어 려 운 점 을 중시 하 다
    요청 방법:  PUT요청 인터페이스:  step1 요청 헤더:  step1 요청 체(두 부분 으로 나 누 기):


    요청 체 솔 루 션:
    params 매개 변 수 는requests.put params매개 변 수 를 통 해 전달 되 고payload매개 변 수 를 통 해 전달 된다.
  • requests.put data총 차례 는chunks매개 변수 에 따라 계산 한 결과preupload chunk_size를 통 해 위로 정 리 된 것 으로 나 타 났 다.math.ceil(filesize/chunk_size)를 얻 은 후에 순환 에서 변화chunks,partNumber두 가지
  • 내장 함수chunk에서 비디오 파일 IO 흐름 을 얻 습 니 다.open방법 으로 지정 한 크기 의 비디오 바이트 를 얻 고 내 장 된 함수read(size=chunk_size)를 통 해 현재 바이트 수len인 자 를 얻 을 수 있 습 니 다.size방법 으로 현재 바이트 의 위 치 를 얻 고 대응 하 는tellstart매개 변수
  • 순환 에서 변경end,partNumber,chunk,chunks,sizestart매개 변수
  • 읽 은 바 이 트 를end매개 변 수 를 통 해 전달
  • step 3 알림 업로드 완료
    요청 방법:  read요청 인터페이스:  requests.put data요청 헤더:  POST요청 체(두 부분 으로 나 누 기):

    PS:위의 그림 은 틀 에 박 힌 매개 변수 가 없고 모두 고정 적 으로 쓰 여 있 습 니 다.

    요청 체 솔 루 션:
    json 형식의 요청 체 는 step1 매개 변수 로 전달 할 수 있 습 니 다.
    폴 링 비디오 표지 가 져 오기
    요청 방법:  step1 요청 인터페이스:  requests.post json GET을 B 역 에 있 는 비디오 파일 이름 으로 바 꾸 는 것 을 주의 하 세 요.
    응답 체:

    해결 방안:B 역 백 엔 드 에서 표지 그림 을 처리 할 때 까지 기 다 려 야 하기 때문에 이 단 계 는 응답 체https://member.bilibili.com/x/web/archive/recovers?fns=[bfilename]필드 가 빈 목록 이 아 닐 때 까지 일정 시간 간격 으로 이 인 터 페 이 스 를 방문 해 야 합 니 다.
    추천 파 티 션 선택
    요청 방법:  [bfilename]요청 인터페이스:  data요청 체:

    PS:
  • GET왜 쓰 는 지 잘 모 르 겠 지만 현재 만 나 서 0 또는 1
  • 로 고정 할 수 있 습 니 다.
  • https://member.bilibili.com/x/web/archive/typeid왜 쓰 는 지 모 르 겠 지만 빈 문자열 이면 됩 니 다
  • 응답 체:

    추천 탭 선택
    요청 방법:  groupid요청 인터페이스:  vfea요청 체:

    응답 체:

    PS:목록 유도 식 으로 탭 문자열 을 목록 에 저장 하고 문자열GET방법 으로https://member.bilibili.com/x/web/archive/typeid연결 할 수 있 습 니 다.
    미리 발표 하 다
    요청 방법:  join요청 인터페이스:  PS:할 말 이 없어 요.직접GET이 링크 는 응답 체 도 쓸모 가 없어 요.
    동 영상 을 발표 하 다
    앞의"오 관 참 육 장"을 거 쳐 마침내 마지막 단계 에 이 르 렀 다
    요청 방법:  https://member.bilibili.com/x/geetest/pre/add요청 인터페이스:  get링크 중POST인 자 를https://member.bilibili.com/x/vu/web/add?csrf=[bili_jct](처음에 필요 한 쿠키 두 개 중 하나)로 바 꾸 는 것 을 주의 하 십시오.
    요청 체(JSON):

    자체 제작 형식의 영상 요청 체 는 위의 그림 과 약간의 차이 가 있 습 니 다.
  • source 는 전송 유형 영상 에 만 바늘 을 놓 기 때문에 자체 제작 유형 영상 은 이 매개 변 수 를 휴대 할 필요 가 없다
  • .
  • 인 터 랙 티 브 파 라 메 터 를 추가 하여 0 또는 1 의 값 을 추출 합 니 다.시청자 들 의 투고 자막 을 허용 하 는 것 과 관련 이 있 는 것 같 습 니 다
  • 신규 noreprint 매개 변수,수치 0 또는 1,자체 성명 과 관련 이 있 는 것 같 습 니 다
  • 가장 중요 한 것 은 저작권 을 성명 하고 copyright 를 1 로 바 꾸 면 된다
  • .
    전체 코드
    Talk is cheap, Show me the code

    찌 르 기: https://gitee.com/nbodyfun/bilibili_video_uploader/raw/master/bilibili_up.py
    여기 서 Biblibili 동 영상 투고 인터페이스 분석 과 Python 으로 자동 투고 기능 을 실현 하 는 글 을 소개 합 니 다.더 많은 관련 Python 자동 투고 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기