日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python爬虫网络库下载_Python3 DHT 网络磁力种子爬虫

發(fā)布時(shí)間:2024/8/1 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬虫网络库下载_Python3 DHT 网络磁力种子爬虫 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Python3 DHT 網(wǎng)絡(luò)磁力種子采集器

😎 嚴(yán)肅的理論

磁力鏈接

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

磁力定義

磁力鏈接是對等網(wǎng)絡(luò)中進(jìn)行信息檢索和下載文檔的電腦程序。和基于“位置”連接的統(tǒng)一資源定位符不同,磁力鏈接是基于元數(shù)據(jù)文件內(nèi)容,屬于統(tǒng)一資源名稱。也就是說,磁力鏈接不基于文檔的 IP 地址或定位符,而是在分布式數(shù)據(jù)庫中,通過散列函數(shù)值來識別、搜索來下載文檔。因?yàn)椴灰蕾囈粋€處于啟動狀態(tài)的主機(jī)來下載文檔,所以特別適用沒有中心服務(wù)器的對等網(wǎng)絡(luò)。

磁力鏈接格式類似于 magnet:?xt=urn:btih:E7FC73D9E20697C6C440203F5884EF52F9E4BD28

分解一下這個鏈接

magnet:協(xié)議名。

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

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

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

tr:tracker 的縮寫,表示 tracker 服務(wù)器的地址。

kt: 關(guān)鍵字,更籠統(tǒng)的搜索,指定搜索關(guān)鍵字而不是特定文件。

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

這里可以閱讀阮一峰的 BT 下載的未來,我很喜歡他文章的最后一句話。

當(dāng)互聯(lián)網(wǎng)上每一臺機(jī)器都在自動交換信息的時(shí)候,謊言和封鎖又能持續(xù)多久呢?

種子/DHT

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

種子定義

BitTorrent 協(xié)議的種子文件可以保存一組文件的元數(shù)據(jù)。這種格式的文件被 BitTorrent 協(xié)議所定義。擴(kuò)展名一般為“.torrent”。

種子結(jié)構(gòu)

.torrent 種子文件本質(zhì)上是文本文件,包含 Tracker 信息和文件信息兩部分。Tracker 信息主要是 BT 下載中需要用到的 Tracker 服務(wù)器的地址和針對 Tracker 服務(wù)器的設(shè)置,文件信息是根據(jù)對目標(biāo)文件的計(jì)算生成的,計(jì)算結(jié)果根據(jù) BitTorrent 協(xié)議內(nèi)的 Bencode 規(guī)則進(jìn)行編碼。它的主要原理是需要把提供下載的文件虛擬分成大小相等的塊,塊大小必須為2k的整數(shù)次方(由于是虛擬分塊,硬盤上并不產(chǎn)生各個塊文件),并把每個塊的索引信息和 Hash 驗(yàn)證碼寫入種子文件中;所以,種子文件就是被下載文件的“索引”。

種子-磁力聯(lián)系

磁力鏈接的唯一標(biāo)識符就是 40 個 16 進(jìn)制字符碼,也就是 magnet:?xt=urn:btih:E7FC73D9E20697C6C440203F5884EF52F9E4BD28 中的 E7FC73D9E20697C6C440203F5884EF52F9E4BD28。這個同時(shí)也是種子文件的 info_hash,是每個種子的唯一標(biāo)識碼。根據(jù)它就能將磁力鏈接于種子聯(lián)系起來,得到資源的詳細(xì)信息,進(jìn)而下載資源。

DHT

BitTorrent 使用”分布式哈希表”(DHT)來為無 tracker 的種子(torrents)存儲 peer 之間的聯(lián)系信息。這樣每個 peer 都成了 tracker。這個協(xié)議基于 Kademila 網(wǎng)絡(luò)并且在 UDP 上實(shí)現(xiàn)。DHT 由節(jié)點(diǎn)組成,它存儲了 peer 的位置。BitTorrent 客戶端包含一個 DHT 節(jié)點(diǎn),這個節(jié)點(diǎn)用來聯(lián)系 DHT 中其他節(jié)點(diǎn),從而得到 peer 的位置,進(jìn)而通過 BitTorrent 協(xié)議下載。

peer: 一個 TCP 端口上監(jiān)聽的客戶端/服務(wù)器,它實(shí)現(xiàn)了 BitTorrent 協(xié)議。

節(jié)點(diǎn): 一個 UDP 端口上監(jiān)聽的客戶端/服務(wù)器,它實(shí)現(xiàn)了 DHT(分布式哈希表) 協(xié)議。

如果對 DHT 協(xié)議感興趣的話一定要看下 DHT 協(xié)議 的具體內(nèi)容,這里有 中文翻譯版本。(想要徹底讀懂項(xiàng)目的話一定要先了解該協(xié)議,代碼都是基于該協(xié)議實(shí)現(xiàn)的,我也是反復(fù)的閱讀了好幾遍。)

😉 務(wù)實(shí)的實(shí)踐

項(xiàng)目來源

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

然而我

想自給自足獲取磁力種子,Google 了一番,發(fā)現(xiàn)大家基本上的代碼都是從 simDHT 這個項(xiàng)目來的,首先這個項(xiàng)目很棒,但是些問題如代碼不規(guī)范、實(shí)現(xiàn)細(xì)節(jié)基本沒有一行注釋、不兼容 Python3。然而很多網(wǎng)上同類的代碼基本上也是對這個完全照搬....

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

經(jīng)過一波 happy coding 之后。

當(dāng)然最后還是給碼出來了啦

項(xiàng)目結(jié)構(gòu)

核心代碼

從 DHT 網(wǎng)絡(luò)中獲取磁力鏈接。主要是利用一些大型的服務(wù)器 tracker,冒充 DHT 節(jié)點(diǎn),使用 UDP 協(xié)議加入到 DHT 網(wǎng)絡(luò)中搜索一波以及和其他節(jié)點(diǎn)搞好關(guān)系,讓他們也分享我點(diǎn)資源。

磁力數(shù)據(jù)存放在了 redis,利用 redis 的集合特性來去重。使用了多線程/多進(jìn)程,用于提高爬取效率。在我的本地機(jī)器(i7-7700HQ/16G 內(nèi)存/8M 網(wǎng)速)跑了一下,效果還不錯。

運(yùn)行效果

查看 redis 磁鏈數(shù)量

$ redis-cli

127.0.0.1:6379> scard magnets

(integer) 1151256

然后代碼推送到我那臺 性能強(qiáng)悍 1 核/2G 內(nèi)存/1M 網(wǎng)速 阿里云服務(wù)器跑一下,哎....

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

最后兜兜轉(zhuǎn)轉(zhuǎn)用到了 aria2 發(fā)現(xiàn)效率還可以。但是要先把 aria2 安裝到你的 PATH 中,具體參考官網(wǎng)介紹。使用其 RPC 特性,節(jié)省線程開銷。

解析種子文件內(nèi)容,同樣也是利用了 Bencode 進(jìn)行解碼。有了種子我們當(dāng)然要看看到底是些什么資源了啦。你說世界就是這么小,在我解析出來的幾百個種子文件中,居然有幾個都是一個社區(qū)的,那個以 1024 為標(biāo)志的社區(qū)。

有圖有真相

不過我還是希望大家銘記下面這 24 字箴言

輔助代碼

database.py:封裝了關(guān)于 redis 的數(shù)據(jù)操作,主要是利用其集合數(shù)據(jù)結(jié)構(gòu)。

如何使用

獲取源碼及安裝依賴環(huán)境

確保已經(jīng)安裝好 redis,redis 的具體配置可以在 database.py 里面修改

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

$ cd magnet-dht

$ pip install -r requirements.txt

運(yùn)行項(xiàng)目

進(jìn)程數(shù)量可以在 crawler.py 進(jìn)行調(diào)整

$ python manage.py -h

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

start manage.py with flag.

optional arguments:

-h, --help show this help message and exit

-s run start_server func.

-m run magnet2torrent func

-p run parse_torrent func

Note: 在運(yùn)行 python manage.py -m 的時(shí)候,要先開個終端窗口啟動 aria2c 服務(wù)。

$ aria2c --enable-rpc=true --bt-metadata-only=true --bt-save-metadata=true

😃 深刻的感悟

自我接觸編程以來,我一直都是屬于興趣驅(qū)動的,對某種技術(shù)感興趣的話就會花時(shí)間去研究去嘗試。想成為一個有趣的人,去做一些有趣的事。

真心覺得能把腦海里的想法轉(zhuǎn)變?yōu)榇a實(shí)現(xiàn)是件很棒的事,即使可能這件事在別人看來并沒有什么了不起。技術(shù)發(fā)展變化總是那么快,不緊跟著可能不小心就掉隊(duì)了。所以希望每個真心熱愛編程的人都能不忘初心,永遠(yuǎn)保持對新技術(shù)的熱情,永遠(yuǎn)能從編碼中找到樂趣。

License

總結(jié)

以上是生活随笔為你收集整理的python爬虫网络库下载_Python3 DHT 网络磁力种子爬虫的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 青青青免费在线 | 依依成人在线视频 | 香蕉视频99| 成人性生交大免费看 | 伊人22综合| 女人叫床很黄很污句子 | 欧美少妇网 | 亚洲一级片av| 国产精品久久久免费视频 | 欧美人与性动交g欧美精器 国产在线视频91 | 激情五月在线 | 性色视频在线 | 激情午夜视频 | 噜啪啪 | 99自拍偷拍视频 | 高潮av在线 | 精品国产无码在线 | jizz日本女人 | 欧美精品一二三四区 | 国内av网站 | 免播放器在线视频 | 国产九色在线 | 香蕉视频亚洲 | 国产va视频 | 亚洲观看黄色网 | 国产亚洲女人久久久久毛片 | 国产91久久精品一区二区 | 牛牛超碰| 天天躁日日躁狠狠躁av麻豆男男 | 午夜毛片 | 欧美激情亚洲激情 | 少妇看片 | 日韩一区av在线 | 色哟哟一区 | 欧美激情一区二区三级高清视频 | a级黄色小说 | 亚洲天堂免费观看 | 午夜淫片 | 亚洲午夜av久久乱码 | 欧美午夜一区二区三区 | 亚州av片 | 91成人破解版| 538国产视频 | 少妇性l交大片免潘金莲 | 国产在线一区二 | 欧美在线观看视频一区二区 | 久草不卡 | 香蕉网久久 | 亚洲一二三在线 | 99精品免费观看 | 91中文 | 中文av网站 | 野外吮她的花蒂高h在线观看 | 能看的av| 九色激情网 | 偷自在线| 国产一区二区在线播放视频 | 在线一区二区三区四区五区 | 中文视频在线观看 | xxxxwww国产 | 波多野结衣视频免费看 | 波多野结衣人妻 | 午夜桃色 | 中文字幕在线观看第二页 | 丰满圆润老女人hd | 国产成人精品一区二区三区四区 | 亚洲综合精品 | www.国产精品 | 成全影视在线观看第8季 | 在线观看av一区 | 日韩国产欧美在线视频 | 亚洲美女在线播放 | 女人下面喷水视频 | 精品美女在线观看 | 精品国产一区三区 | 亚洲无限码 | 欧美性在线观看 | 久久久资源网 | 污污网站免费在线观看 | 久久久网站 | 色资源在线观看 | 成人天堂网 | 日本免费在线视频观看 | 在线观看日本 | 永久免费看mv网站入口78 | 国产亚洲一区二区在线 | 又黄又爽的视频在线观看 | 男女日皮视频 | 精品国产一区二区三区噜噜噜 | 亚洲天堂久久久 | 国产后入又长又硬 | 欧美性猛交久久久乱大交小说 | 亚洲一区二区三区四区在线播放 | 欧美一区二区日韩 | 91精品国产色综合久久不卡98口 | 被灌满精子的波多野结衣 | 香蕉视频黄在线观看 | 久久福利网 | 爽妇综合网|