2020年2月21日 星期五

MahoMangaDownloaderVer10.0更新

這次更新主要是有使用者反應dm5有一些老漫畫不能下載, 其實這問題以前也解過, 只是因為這類case不是common case, 都只能看到了才有辦法解, 主要原因在於因為下載器在下載dm5的資源時是用CefSharp這瀏覽器套件, 因為dm5他的圖片跟網址不會總是匹配, 網頁剛load起來就算是在某特定頁面, 他也有機會先載入首頁的圖片在換成對應的圖片, 這造成下載器很容易誤載錯圖片, 所以針對dm5的部分是有做圖片跟頁數的匹配檢查。

然後問題就來了, dm5的一些老漫畫的圖片url命名規則並不統一, 所以這會造成下載器的檢查誤判, 之前針對幾個rule做了對應的邏輯處理, 可是這次看到的rule找不到好的對應方法, 就他X的囧了, 最後決定沒辦法, 直接開個setting讓使用者可以繞過圖片檢查吧, 這設定預設是關閉的, 如果有人發現dm5某些特定漫畫無法下載, 就麻煩自己打開設定吧, 載完那些特定漫畫在自己把設定關掉, 目前只能先這樣了QQ


Ver10.0 更新內容:
  • 新增dm5停用頁數檢查設定 (如果dm5有特定漫畫無法下載, 可以在選單->設置->dm5->勾選停用頁數檢查, 這樣下載器就會停用該功能, 就可以下載dm5的一些老漫畫, 下載完記得把設定用回去, 畢竟沒做頁數檢查的情況有時會有載到重複頁的問題。)


下載器Demo圖:





介紹:
https://project.zmcx16.moe/?page=mahomangadownloader


環境需求



簡單除錯:
  1. 如果下載失敗, 麻煩先用瀏覽器測試看資源是否存活。
  2. 如果能正常用瀏覽器瀏覽, 麻煩先查看LogFiles資料夾內的log檔案看錯誤訊息為何。
  3. 回報問題時, 麻煩提供有問題的網址以及log內容, 這樣我才有辦法測試找問題原因。



檔案位址:
https://drive.google.com/open?id=1K-SqcG4g852MK1xDpK8Yag-rom_YqAXv

32位元版本:
https://drive.google.com/open?id=1n9T45XYkQRjDUexjx2j3lk5UcC_GapvA

解壓密碼:zmcx16



免責聲明:
******************
MahoMangaDownloader僅作為學術研究使用,禁止利用本程式行非法用途。

23 則留言:

  1. 更新辛苦了!

    是說想請問一下 當exhentai的搜尋結果過多
    到約1000多件時 之後的就會搜不出來了 這是正常的嗎?

    回覆刪除
    回覆
    1. 您好, 要是搜尋物件太多, 會有容易被ban ip的問題, 因為下載器在搜尋時, 會去每個漫畫的頁面取得他原文的名稱, 所以1000多個物件等於會打1000多個http request給網站, 導致很容易就被ban ip。

      要繞過這問題目前大概就兩個方法:
      1. 搜尋關鍵字不要太廣泛, 可以多針對社團名或作品名搜尋, 另外加上對應的語言, 減少搜尋的量
      2. 選單->設置->ehentai有個快速搜尋的選項, 啟用的話下載器就不會去每一頁取得原文標題, 這樣搜尋的量會變成1/25, 就比較不會有量太大被ban ip的問題, 不過相對的拿到的檔名就會是英文。

      刪除
  2. 可以用關鍵字一次將有支持的網站做搜尋嗎?
    一個個找實在麻煩。

    如果不行的話,可以列出所有支援的網站嗎?
    希望可以用點的進去
    感謝您

    回覆刪除
    回覆
    1. 您好, 支援的網站可以參考這裡:
      https://project.zmcx16.moe/?page=mahomangadownloader

      另外因為搜尋本身是支援各個網站的進階搜尋(作者, 團體, 作品等分類), 而每個網站進階搜尋的格式都不一樣, 所以除非只讓搜尋只針對基本關鍵字搜尋, 不然不太可能做到。

      刪除
  3. 可以新增這個網站嗎 http://www.90mh.com/update/
    一些漫畫只有這裡更新了
    像是天野惠QQ

    回覆刪除
    回覆
    1. 您好, 因為目前手邊有不少其他專案在做, 不好意思暫時不打算新增網站喔。

      刪除
  4. 作者大大您好 小弟更新10.0後 今天打開電腦正要嘗試下載e-h的內容時(cookie有填好)遇到下載進度0任務即結束的情況(n-h不會有這種情況),不知道該怎麼瓣才好呢,希望能請您解惑~謝謝

    回覆刪除
  5. 情況更新: 小弟嘗試使用以前的9.8版 發現也不能下載e-h資源了,情況是搜索的到,但開使任務幾秒後,維持0的進度結束任務(假如是30頁有時後是0/0就停了 有時是1/30停但打開資料夾並沒有下載到圖片

    回覆刪除
    回覆
    1. 您好, 我剛剛測試我這邊的環境下載是正常的, 你可以看一下log資料夾內的log檔案, 看錯誤訊息是什麼, 我在分析看看原因。

      刪除
    2. 作者大大您好~經查看log資料夾後得到3個檔案
      其中3月5號出現大量報錯信息 由於有點多我會分批在下面留言比較不會太亂

      刪除
    3. ERROR 2020/03/05 04:52:15 ImgFile download_file System.AggregateException: One or more errors occurred. ---> System.Net.WebException: The remote server returned an error: (400) Bad Request.
      at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
      at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
      at System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)
      --- End of inner exception stack trace ---
      at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
      at System.Threading.Tasks.Task.Wait(TimeSpan timeout)
      at FileIO.ImgFile.download_file(String download_url, String path, String file_name_no_extension, List`1 headers, Image_Format img_format)
      ---> (Inner Exception #0) System.Net.WebException: The remote server returned an error: (400) Bad Request.
      at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
      at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
      at System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)<---

      刪除
    4. WARN 2020/03/05 04:52:18 DownloadProcess DoWorker Download Img exceed retry count

      刪除
    5. 每一筆錯誤資料在經過比對後 都是這兩個狀況的其中一種 希望足夠作者大大找出問題所在~

      刪除
    6. 您好, 看log是網站直接吐400 error回來, 請問你有用VPN嗎? 另外不能下載的資源是否現在還是可以用瀏覽器瀏覽? 可以麻煩提供有問題的網址給我, 我在測試看看。

      刪除
    7. 作者大大您好,小弟沒用VPN ,也嘗試過將拿來看BILIBILI影片的擴充功能設置為關閉,不過狀況沒有解決
      下載的資源是可以瀏覽的,也可以按 Download original下載單張原尺寸圖片 嘗試過幾個完全不同的資源都不行
      像是
      https://e-hentai.org/g/1258770/feb9d79733/
      或是
      https://e-hentai.org/g/1477568/52e228549f/
      我想到家中有另一台老電腦 在想有沒有可能IP因為什麼原因干擾呢,但是以前都沒發生過這樣的情況 ( ´•̥̥̥ω•̥̥̥` )

      刪除
    8. 我剛剛測試了一下是正常的, 如果log都是網站吐400回來, 比較有可能是網路問題。

      1. 先確認一下自己電腦的是不是用雙網卡, 如果是的話下載器可能用到的IP跟瀏覽器的可能不一樣, 所以才會瀏覽器正常下載器有問題。

      2. 看能不能換個網路環境看看, 用手機網路試試看。

      3. 如果還是一樣都不行, 因為網站回http code 400我這邊沒辦法重現, 如果真的要找原因, 只能用網路監控軟體比較看看了, 如果你不嫌麻煩的話可以參考以下做法:
      1. 下載網路監控軟體Fiddler並安裝(https://www.telerik.com/fiddler)
      2. 打開Fiddler, 他會開始錄電腦對外打的http request

      3. 看下載器打出去的http request, 看request跟response的內容是不是有問題。

      如果你不介意的話, 可以寄詳細的log還有Fiddler看到的內容給我, 我的mail: zmcx16@gmail.com

      刪除
    9. 作者大大您好,小弟使用手機usb網路連接也是出現同樣的狀況,我已將使用Fiddler後的截圖與今天的log過去了~請您看看 希望能找到問題所在qwq

      刪除
    10. 非常感謝你這幾天幫忙用自己的環境找問題, 問題應該就是EH針對下載原圖檔的部份有改版。 再麻煩你下載Ver10.1版測試看看~。

      刪除
  6. 您好,我也遇到樓上幾位狀況,用9.8跟10.0載表站的圖,也會進度0直接跳任務完成,沒用vpn也填好cookie,log檔如下
    WARN 2020/03/09 19:28:05 UserSetting ReadSettingToIni Read mmd_setting.ini fail, write default setting.
    ERROR 2020/03/09 19:30:11 ImgFile download_file System.AggregateException: 發生一或多項錯誤。 ---> System.Net.WebException: 遠端伺服器傳回一個錯誤: (400) 不正確的要求。
    於 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
    於 System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
    於 System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)
    --- 內部例外狀況堆疊追蹤的結尾 ---
    於 System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
    於 System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
    於 System.Threading.Tasks.Task.Wait(TimeSpan timeout)
    於 FileIO.ImgFile.download_file(String download_url, String path, String file_name_no_extension, List`1 headers, Image_Format img_format)
    ---> (內部例外狀況 #0) System.Net.WebException: 遠端伺服器傳回一個錯誤: (400) 不正確的要求。
    於 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
    於 System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
    於 System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)<---

    ERROR 2020/03/09 19:30:12 ImgFile download_file System.AggregateException: 發生一或多項錯誤。 ---> System.Net.WebException: 遠端伺服器傳回一個錯誤: (400) 不正確的要求。
    於 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
    於 System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
    於 System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)
    --- 內部例外狀況堆疊追蹤的結尾 ---
    於 System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
    於 System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
    於 System.Threading.Tasks.Task.Wait(TimeSpan timeout)
    於 FileIO.ImgFile.download_file(String download_url, String path, String file_name_no_extension, List`1 headers, Image_Format img_format)
    ---> (內部例外狀況 #0) System.Net.WebException: 遠端伺服器傳回一個錯誤: (400) 不正確的要求。
    於 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
    於 System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
    於 System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)<---

    ERROR 2020/03/09 19:30:13 ImgFile download_file System.AggregateException: 發生一或多項錯誤。 ---> System.Net.WebException: 遠端伺服器傳回一個錯誤: (400) 不正確的要求。
    於 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
    於 System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
    於 System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)
    --- 內部例外狀況堆疊追蹤的結尾 ---
    於 System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
    於 System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
    於 System.Threading.Tasks.Task.Wait(TimeSpan timeout)
    於 FileIO.ImgFile.download_file(String download_url, String path, String file_name_no_extension, List`1 headers, Image_Format img_format)
    ---> (內部例外狀況 #0) System.Net.WebException: 遠端伺服器傳回一個錯誤: (400) 不正確的要求。
    於 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
    於 System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
    於 System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)<---

    WARN 2020/03/09 19:30:13 DownloadProcess DoWorker Download Img exceed retry count

    回覆刪除
    回覆
    1. 您好, 請問你是不是有啟用下載原圖檔的功能?

      目前有找到問題是EH站有針對下載原圖檔的部份做改版, 再麻煩你用Ver10.1測試看看。 如果有問題在跟我說, 我在調查看看~。

      刪除
  7. 報告,www.manhuagui.com/
    看起來只要下載就直接擋IP了,開一個線程也一樣,這有得解嗎?
    謝謝

    回覆刪除
    回覆
    1. 您好, 我剛剛測試漫畫櫃下載功能是正常的, 基本上漫畫櫃ban ip是老問題了, 只要下載量大就會發生, 什麼時候解ban我也沒有頭緒, 所以我現在漫畫櫃都是少量下載, 大多數都使用dm5或manhuadui, 建議你可以多搭配幾個網站使用, 畢竟漫畫櫃ban ip的問題基本上沒得解, 只能等網站自己解ban QQ

      刪除