Pythonを使って、各大きいVのビデオの構想をダウンロードします。詳しくは分かります。


前言
本文の文字と写真はネットから由来しています。学習、交流だけに使って、商業用途がありません。問題があれば、直ちに連絡してください。
以下の文章はPython 7号から来ています。作者のsomenzz
Python爬虫類、データ分析、ウェブサイトの開発などの実例教程のビデオは無料でオンライン観覧します。
https://space.bilibili.com/523606542
前回はPythonで知乎ビデオを大量にダウンロードする方式を書きましたが、今回はPythonでダウンロードしたドトーンの個人のホームページのすべての透かしなし動画を共有します。本稿では、いい脚本を提供するのではなく、どのようにこのような脚本を書きますか?
考え方
まず考えを言います。大量にビデオをダウンロードします。まず一つのダウンロードを試してみて、ウォーターマークがないことを確認して、それから一つの循環を書いて大量にダウンロードします。
難しい点:動画をダウンロードするのは簡単かもしれませんが、複数の動画をダウンロードするのはちょっと複雑です。複数の動画に対応するurlをつかむ必要があります。震動というのは登山防止措置をしました。携帯電話で個人のホームページの動画リストを見るだけで、パソコンの端のページが見えません。これは携帯電話のhttpsカバンをつかむ必要があります。

ここでBurpsuiteを使いましたので、私は自分でよく使うBurpsuite 2.16専門版をネットディスクに置いて、公衆番号「Python 7号」を「burp」に返信して取得して、ダウンロードしてからstart_を実行します。burp.batまたはsh start_burp.shはワンタッチで起動できます。購入許可なしでとても便利です。
動画リスト
  • 手ぶれビデオリンクを探して、シェアをクリックして、リンクをコピーして、パソコンで開けて、開発者ツールを開けて、networkオプションをクリックしてください。
  • リフレッシュ、インターフェースを見て、リターン値に再生アドレスがあるインターフェースを見つけました。

    この中にプレイがあります。addrは、内部にurllistがあります。私たちはこのurllist[0]をコピーしてブラウザで開きます。ウェブサイトは本物の再生アドレスにジャンプします。同時にダウンロードボタンを見ることができます。

    このビデオをダウンロードして、透かしを持っていることを発見しました。どうやって透かしを持たないビデオをダウンロードしますか?ネットで検索したら、上記のurllist[0]の中のplaywmをプレイに変えたらいいです。
    コードを書き始め、このurllist[0]を取得し、ダウンロードします。
    
    def get(share_url) -> dict:
      """
      share_url ->       url
           [{'url':'', 'title','format':'',},{}]
      """
      data = []
      headers = {
        'accept': 'application/json',
        'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'
      }
      api = "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={item_id}"
    
      rep = requests.get(share_url, headers=headers, timeout=10)
      if rep.ok:
        # item_id
        item_id = re.findall(r'video/(\d+)', rep.url)
        if item_id:
          item_id = item_id[0]
          # video info
          rep = requests.get(api.format(item_id=item_id), headers=headers, timeout=10)
          if rep.ok and rep.json()["status_code"] == 0:
            info = rep.json()["item_list"][0]
            tmp = {}
            tmp["title"] = info["desc"]
    
            #        
            play_url = info["video"]["play_addr"]["url_list"][0].replace('playwm', 'play')
            tmp["url"] = play_url
            tmp["format"] = 'mp4'
           def get(share_url) -> dict:
      """
      share_url ->       url
           [{'url':'', 'title','format':'',},{}]
      """
      data = []
      headers = {
        'accept': 'application/json',
        'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'
      }
      api = "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={item_id}"
    
      rep = requests.get(share_url, headers=headers, timeout=10)
      if rep.ok:
        # item_id
        item_id = re.findall(r'video/(\d+)', rep.url)
        if item_id:
          item_id = item_id[0]
          # video info
          rep = requests.get(api.format(item_id=item_id), headers=headers, timeout=10)
          if rep.ok and rep.json()["status_code"] == 0:
            info = rep.json()["item_list"][0]
            tmp = {}
            tmp["title"] = info["desc"]
    
            #        
            play_url = info["video"]["play_addr"]["url_list"][0].replace('playwm', 'play')
            tmp["url"] = play_url
            tmp["format"] = 'mp4'
            data.append(tmp)
    
      return data
    
    if __name__ =='__main__':
      videos = get('https://www.iesdouyin.com/share/video/6920538027345415431/?region=&mid=6920538030852885262&u_code=48&titleType=title&did=0&iid=0')
      for video in videos:
        downloader.download(video['url'],video['title'],video['format'],'./download') data.append(tmp)
    
      return data
    
    if __name__ =='__main__':
      videos = get('https://www.iesdouyin.com/share/video/6920538027345415431/?region=&mid=6920538030852885262&u_code=48&titleType=title&did=0&iid=0')
      for video in videos:
        downloader.download(video['url'],video['title'],video['format'],'./download')
    ここのdownloader.download関数は、前の文で知っている動画のダウンロードの関数と同じです。ここではコードを貼りません。
    個人のホームページのビデオリンクを取得します。
    前の2歩はすでに単一の手ぶれ動画の無透かしダウンロードを実現しました。今私達がやるべきことは多くのこのようなリンクを見つけて、直接循環すればいいです。
    大きいVの個人のホームページを任意に開いて、リンクを共有して、コピーして、ブラウザを使って開けます。動画は一つも見えません。

    ブラウザ

    ドトーンアプリ
    手ぶれを説明して一定の制限をして、ブラウザから複数のビデオの情報を見ないようにします。この時、携帯アプリからカバンをつかむことを覚えて、携帯のhttp要請がどのように始まったのかを見てから、アプリを使ってシミュレーションします。
    私はずっと使っています。BurpSuite(以下Burpといいます。)はとても使いやすいです。ここではどう使いますか?
    1、Burpを実行する
    ダウンロードしてスタートします。burp.batまたはsh start_Burp.shはBurpを起動し、その後、エージェント設定を開き、Burpを実行するマシンIPに紐付けられます。

    注意ipを127.1.0.1に設定しないでください。このように設定すると、現地の要求だけがプロキシを使用できます。携帯はこのプロキシに接続できません。
    2、携帯設定代理
    携帯とパソコンは同じwifiに接続しています。iPhoneの操作は以下の通りです。そして設定に入ります。無線LAN->は同じwifiの右側のinformation記号をクリックして、下に引いて、配置代理をクリックして、BurpSuiteと同じipとポートを配置します。Androidの携帯電話の設定も同じです。これでBurpSuiteで携帯電話のhttp流量をつかむことができます。
    3、Burpの証明書を携帯でダウンロードし、信頼を設定する
    携帯ブラウザに入るhttp://burp。CAをクリックして証明書をダウンロードします。設定->>共通->記述ファイル->>PortSwiggar CA->インストール設定->汎用->本機->証明書信頼設定について、BurpSuiteの証明書を開いてください。
    これで携帯からhttpsのバックを取ることができます。
    4、BurpSuiteの設定が中断されました。

    このステップを設定すると、携帯電話の要求はここでブロックされます。行を選択して、またはパケットを修正してから、行を放してもいいです。また、repeatに送信して、その後の再生要求を行うことができますので、フロントエンドからの要求は信頼できません。
    今は携帯の震えアプリを開けば、ここで大量の要求が詰まります。私達は流しを選択して、震えアプリのデータが一歩ずつ現れます。個人のホームページの動画に早くタッチする前に、Repeatにリクエストを送ります。

    その後BurpSuiteのRepeatタブを開けば、先ほど送った要求が見えます。この時に再生を選択し、データを見て、私達が使うべきインターフェースを決めます。下の図のように。

    このインターフェースが要求を満たしていることが分かりました。ここではインターフェースのurl、headersの各種パラメータ、headersのUser-Agentパラメータは、クライアントがブラウザかそれともAppかを区別する重要な識別情報です。したがって、コードを書いてシミュレーション要求を行い、必要な大量ダウンロードリンクを取得することができます。
    urlにはパラメータが非常に多いので、固定的なものもあります。他の人のホームページによってはパラメータが変わります。自分で使うだけであれば、簡単に正規表現を通じてこれらのurlリンクを抽出し、大量にダウンロードすればいいです。
    シナリオを書いて他の人に使ってもらいたいなら、もっと多くの仕事をしなければなりません。例えば、urlとheadersのパラメータがどうやって取得または生成されたかを確認するために、もっと多くのアプリを見て、シナリオを書いて自動化する必要があります。興味のある方は自分で探してください。
    最後の言葉
    ビデオをキャプチャする鍵は、ビデオの再生アドレスを見つけることです。再生アドレスがあります。コードを書かなくても、ブラウザを使ってダウンロードできます。再生アドレスがまだ足りないので、ウォーターマークに行くことができるかどうかを考えます。大量にダウンロードするなら、どのように多くのビデオリンクを取得するかを知りたいです。ブラウザでキャプチャできない時、BurpSuiteを使って携帯電話の流量バッグをつかむことを考えて、さらにインターフェイスのデータを取り出して、あるいは携帯電話の要求をシミュレーションして、爬虫類をやる学友に対して、BurpSuiteはスイスの軍刀で、とても実用的です。
    もしこの文章があなたのために役に立つなら、いい言葉を言ってください。また見てください。ありがとうございます。
    ここでは、Pythonを使って、各大きいVビデオをダウンロードする構想について詳しく解説した文章を紹介します。これまでの文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。