精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是磁力鏈接?如何用Python獲取磁力種子?

馬哥Linux運維 ? 來源:未知 ? 作者:工程師郭婷 ? 2018-08-05 09:08 ? 次閱讀

磁力鏈接

現在我們使用迅雷等工具下載資源的時候,基本上都只需要一個叫做磁力鏈接的東西就可以了,非常方便。

磁力鏈接是對等網絡中進行信息檢索和下載文檔的電腦程序。和基于“位置”連接的統一資源定位符不同,磁力鏈接是基于元數據文件內容,屬于統一資源名稱。也就是說,磁力鏈接不基于文檔的 IP 地址或定位符,而是在分布式數據庫中,通過散列函數值來識別、搜索來下載文檔。因為不依賴一個處于啟動狀態的主機來下載文檔,所以特別適用沒有中心服務器的對等網絡。

磁力鏈接格式類似于 :

magnet:?xt=urn:btih:E7FC73D9E20697C6C440203F5884EF52F9E4BD28

分解一下這個鏈接

magnet:協議名。

xt:exact topic 的縮寫,表示資源定位點。BTIH(BitTorrent Info Hash)表示哈希方法名,這里還可以使用 SHA1 和 MD5。這個值是文件的標識符,是不可缺少的。

一般來講,一個磁力鏈接只需要上面兩個參數即可找到唯一對應的資源。也有其他的可選參數提供更加詳細的信息。

dn:display name 的縮寫,表示向用戶顯示的文件名。

tr:tracker 的縮寫,表示 tracker 服務器的地址。

kt: 關鍵字,更籠統的搜索,指定搜索關鍵字而不是特定文件。

mt:文件列表,鏈接到一個包含磁力鏈接的元文件 (MAGMA - MAGnet MAnifest)。

種子/DHT

通過磁力就可以獲取種子文件從而進行下載,這跟直接使用種子下載時一個道理的,只是少了從磁力到種子文件的一個過程而已。

BitTorrent 協議的種子文件可以保存一組文件的元數據。這種格式的文件被 BitTorrent 協議所定義。擴展名一般為“.torrent”。BitTorrent 使用”分布式哈希表”(DHT)來為無 tracker 的種子(torrents)存儲 peer 之間的聯系信息。這樣每個 peer 都成了 tracker。這個協議基于 Kademila 網絡并且在 UDP 上實現。

DHT 由節點組成,它存儲了 peer 的位置。BitTorrent 客戶端包含一個 DHT 節點,這個節點用來聯系 DHT 中其他節點,從而得到 peer 的位置,進而通過 BitTorrent 協議下載。

peer: 一個 TCP 端口上監聽的客戶端/服務器,它實現了 BitTorrent 協議。

節點: 一個 UDP 端口上監聽的客戶端/服務器,它實現了 DHT(分布式哈希表) 協議。 如果對 DHT 協議感興趣的話一定要看下 DHT 協議 的具體內容,這里有 中文翻譯版本。(想要徹底讀懂項目的話一定要先了解該協議,代碼都是基于該協議實現的)

務實的實踐

項目來源

一般來講到 Python 爬取,大家的第一印象可能就是 requests/aiohttp,或者是 scrapy/pyspider 等爬蟲框架。基本上都是從指定的 HTML 頁面爬取信息。我有一個項目 torrent-cli(github.com/chenjiandongx/torrent-cli) 就是一個從資源網站上爬取磁力信息的工具。

然而我想自給自足獲取磁力種子,Google 了一番,發現大家基本上的代碼都是從 simDHT(github.com/fanpei91/simDHT)這個項目來的,首先這個項目很棒,但是有個問題就是代碼實現細節基本沒有一行注釋且不兼容 Python3。而很多網上同類的代碼基本上也是對這個照搬....

所以我知道我要開始干活了

經過一波 happy coding 之后

項目結構

核心代碼

crawler.py

從 DHT 網絡中獲取磁力鏈接。主要是利用一些大型的服務器 tracker,冒充 DHT 節點,使用 UDP 協議加入到 DHT 網絡中一波搜索以及和其他節點搞好關系,讓他們也分享我點資源。磁力數據存放在了 redis,利用 redis 的集合特性來去重。使用了多線程/多進程,用于提高爬取效率。在我的本地機器(i7-7700HQ/16G 內存/8M 網速)跑了一下,效果還不錯,4 小時爬了 100 萬條磁力鏈接。

$ redis-cli

127.0.0.1:6379> scard magnets

(integer)1137627

然后代碼推送到我那臺性能強悍 1 核/2G 內存/1M 網速阿里云服務器跑一下,哎....

magnettotorrent_aria2c.py 利用 aria2 將磁力鏈接轉換為種子文件。嘗試了一些其他的方式將磁力轉換為種子,但效果好像都不怎么理想。使用過 libtorrent 的 Python 版本,不知道是我打開方式不對還是它本來效率就不高,反正愣是一個種子都沒有轉換成功。

最后兜兜轉轉用到了 aria2 發現效率還可以。這里利用多線程跑一個命令。所以要先把 aria2 安裝到你的 PATH 中,具體參考官網介紹。

parse_torrent.py 解析種子文件內容,同樣也是利用了 bencoder 進行解碼。有了種子我們當然要看看到底是些什么資源了啦。你說世界就是這么小,在我解析出來的幾百個種子文件中,居然有幾個都是來自那個以2的10次方為標志的社區。

有圖有真相

輔助代碼

database.py:封裝了關于 redis 的數據操作,主要是利用其集合數據結構。

utils.py:一些工具函數

如何使用

獲取源碼及安裝依賴環境

$ git clone https://github.com/chenjiandongx/magnet-dht.git

$ cd magnet-dht

$ pip install -r requirements.txt# 確保已經安裝好 redis,redis 的具體配置可以在 database.py 里面修改。

運行項目

至于進程數量可以在 crawler.py 進行調整$ python manage.py -h

usage: manage.py [-h][-s][-m][-p]

start manage.py with flag.

optional arguments:

-h,--help show this help message andexit-s run start_server func.

-m run magnet2torrent func

-p run parse_torrent func

深刻的感悟

自我學編程以來,我一直都是屬于興趣驅動的,對某種技術感興趣的話就會花時間去研究去嘗試。想成為一個有趣的人,去做一些有趣的事,真心覺得能把腦海里的想法轉變為代碼實現是件很棒的事,即使可能這件事在別人看來并沒有什么了不起。技術發展變化總是那么快,不緊跟著可能不小心就掉隊了。所以希望每個真心熱愛編程的人都能不忘初心,永遠保持對新技術的熱情,永遠能從編碼中找到樂趣。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9029

    瀏覽量

    85207
  • 客戶端
    +關注

    關注

    1

    文章

    290

    瀏覽量

    16663

原文標題:用Python獲取磁力種子

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    磁力穿梭裝置的工作原理#電子

    磁力
    未來加油dz
    發布于 :2023年04月15日 16:29:25

    磁力

    磁力計最新資料,全心奉獻
    發表于 09-01 18:16

    磁力眩暈頻率射線

    磁力眩暈頻率射線 有人聽說過這東西沒有 今天在網上看到很好奇
    發表于 10-26 18:26

    如何處理磁力計HMC5883L獲取的三軸數據?

    用HMC5883L來矯正陀螺儀使用四元數法來求偏航角,想問問如何處理磁力計HMC5883L獲取的三軸數據?
    發表于 07-25 19:44

    磁力驅動泵是什么?

    磁力偶合器的一半(內磁鐵)裝于泵軸上,并以非鐵磁性材料制成的隔離罩密封在泵體內;另一半(外磁鐵)裝于電機軸上,在隔離罩外以磁力帶動內磁鐵旋轉驅動泵工作。故無泄漏。
    發表于 10-25 09:10

    磁力泵的工作原理

    磁力泵的工作原理 磁力泵由泵、磁力傳動器、電動機三部分組成。關鍵部件磁力傳動器由外磁轉子、內磁轉子及不導磁的隔離套組成。
    發表于 12-07 10:00 ?2305次閱讀

    什么是磁力濾鏡

    什么是磁力濾鏡   磁力濾鏡是并不是單一的某種濾鏡,而是一種安裝濾鏡的方式,它是目前市面上比較新穎的產品,所以筆者將其單獨列出。大家知道,目前市面
    發表于 01-30 14:45 ?665次閱讀

    簡述磁力泵的工作原理

      磁力傳動離心泵(簡稱磁力泵)是應用現代磁力學原理,利用永磁體的磁力傳動實現扭矩的無接觸傳遞的一種新型泵,也就是電機帶動外轉子(即外磁鋼)總成旋轉時,通過磁
    發表于 10-30 16:10 ?2557次閱讀

    磁力泵密封圈的加工工藝

    磁力泵生產加工工藝,磁力泵加工過程中的特殊處理及說明, 磁力泵密封圈的加工工藝
    發表于 01-28 17:28 ?1464次閱讀

    磁力泵工作原理_磁力泵結構圖及其特點

    本文主要對磁力泵工作原理、磁力泵結構圖及其特點進行分析,磁力泵主要包含電機、支架、外磁缸(主動轉子)、內磁缸(從動轉子)、隔離罩、滑動軸承、傳動軸、葉輪和泵體等。
    發表于 09-27 17:27 ?5.9w次閱讀
    <b class='flag-5'>磁力</b>泵工作原理_<b class='flag-5'>磁力</b>泵結構圖及其特點

    磁力齒輪發展綜述

    磁力齒輪具有結構簡單、無摩擦、無油污、少維護和自動過載保護等特點,是一種較理想的傳動設備。本文綜述了國內外有關磁力齒輪的研究,按照時間順序回顧了其發展歷程,總結歸納了其發展脈絡和演進過程;橫向比較了
    發表于 03-22 15:45 ?0次下載
    <b class='flag-5'>磁力</b>齒輪發展綜述

    磁力耦合器的作用_磁力耦合器的優點

    磁力耦合器是一種全新的傳動機構,是一個純機械產品,沒有工作環境的限制。更適合于易燃易爆的環境,由于磁力耦合器是通過磁場傳遞扭矩的傳動裝置,電動機與負載轉軸之間沒有任何機械連接。
    的頭像 發表于 08-19 14:34 ?2.6w次閱讀
    <b class='flag-5'>磁力</b>耦合器的作用_<b class='flag-5'>磁力</b>耦合器的優點

    磁力啟動器工作原理_磁力啟動器作用

    本文主要闡述了磁力啟動器工作原理及磁力啟動器的作用。
    的頭像 發表于 11-20 10:02 ?3.3w次閱讀

    磁力泵結的工作原理

    磁力傳動泵,簡稱磁力泵。與屏蔽泵一樣,結構上只有靜密封沒有動密封。所以可以在輸送液體時無泄漏。用在石化系統輸送易燃、易爆、易揮發、有毒、有腐蝕及貴重液體等。 ? ?磁力泵結的工作原理 磁力
    的頭像 發表于 07-30 11:42 ?2098次閱讀

    磁力耦合器安裝間隙怎么調

    磁力耦合器(Magnetic Coupling)是一種利用磁力傳遞能量的裝置,廣泛應用于工業自動化、機器人、醫療設備等領域。磁力耦合器具有無接觸、無磨損、低噪音、高效率等優點,但其性能受到安裝間隙
    的頭像 發表于 08-14 10:11 ?689次閱讀