sdvcrx / pan-baidu-download

百度网盘下载脚本
MIT License
436 stars 103 forks source link

最近无法下载,提示“IndexError: list index out of range” #23

Closed menglingjie closed 8 years ago

menglingjie commented 8 years ago

详细错误提示如下:

Traceback (most recent call last):
  File "bddown_cli.py", line 53, in <module>
    execute_command()
  File "bddown_cli.py", line 49, in execute_command
    commands[command](args[1:])
  File ".../pan-baidu-download/command/download.py", line 56, in download
    info = pan.get_dlink(url, secret)
  File ".../pan-baidu-download/bddown_core.py", line 102, in get_dlink
    js = self._get_js(link, secret)
  File ".../pan-baidu-download/bddown_core.py", line 98, in _get_js
    return js[0] or None
IndexError: list index out of range

2015-10-17前还好用,从2015-10-19开始就提示这个错误。 简单看了一下错误内容,是由于_get_js()函数中的req.text内容为404error,里面的中文都是乱码,看不出来是啥错误。不知道是我这面的个例还是baidu那面做了啥屏蔽?

运行环境:

sdvcrx commented 8 years ago

我也遇到过一次,有空再看看

r-learner commented 8 years ago

好象是因为那个共享的链接被baidu屏蔽了。我共享自己的资源给自己,用然后pan-baidu-download 下载,发现有的链接会返回这个错误,后来在我的分享的那里,无意发现这,被屏蔽的分享,会在这里显示,被屏蔽的分享,都是返回上面的那个错误。 另外,是不是下载自己网盘的资源,得创建分享先,才可以用pan-baidu-download 下载?

sdvcrx commented 8 years ago

@r-learner 对的

menglingjie commented 8 years ago

我是下载自己分享的内容,通过网页能够访问到分享内容(已经logout了baidu账号),并且能够输入提取密码。但用pan-baidu-download却出错。

sdvcrx commented 8 years ago

@menglingjie 方便提供个链接么

menglingjie commented 8 years ago

试试这个: 链接: http://pan.baidu.com/s/1kTKYBt1 密码: qafp

r-learner commented 8 years ago

@menglingjie 测试了一下,可以正常下载。

yamada95 commented 8 years ago

我这边也遇到这个错误,稍微分析了下是因为我没登陆过,一直只用到download命令,没保存过cookies,当输入这类http://pan.baidu.com/s/1ATtUY链接时,百度检测没正确的BAIDUID cookie会返回页面不存在错误(在浏览器匿名模式下访问应该可以重现),加了个重试,以第一次返回的新cookie重新做请求就没问题了:

~/src/pan-baidu-download$ git diff bddown_core.py
diff --git a/bddown_core.py b/bddown_core.py
index 4140074..3ed01a0 100644
--- a/bddown_core.py
+++ b/bddown_core.py
@@ -99,7 +99,12 @@ class Pan(object):

     def get_dlink(self, link, secret=None, fsid=None):
         info = FileInfo()
-        js = self._get_js(link, secret)
+        js = None
+        try:
+            js = self._get_js(link, secret)
+        except IndexError, e:
+            # Retry with new cookies
+            js = self._get_js(link, secret)

不清楚其它人是否也是同一问题~

menglingjie commented 8 years ago

问题解决啦!~(≧▽≦)/~ 谢谢@serika00