这是一个历史性遗留问题,之前一直没解决。这两天在写aria2的前端,于是把这个历史遗留问题提到了日程最前。
问题如下:
wget和curl和aria2c,三个工具用同一cookie,同一referer去请求窘转的同一文件,结果只有aria2会得到提取码错误的页面。
猜想:
Agent问题,遂加上如下参数 -U 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-us) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27'
结果依旧。
于是
sudo port install netcat
nc -l -p 8080
讲请求的host改成localhost:8080之后,分别抓得请求如下:
GET /ftn_handler/1c9e94a8f3f4a153cbf26642f1ec5cfccc24ef3b793d41a1736006dc55189d149da1ed2389c819b5969c55ff725d63d96ac317eead18aea0d6f149407fbfaf7b/%5Bgfgf5zc%40kf%402dj%5DMaria+Holic.part01.rar?k=3e663461336477e7f779bc751564051c50545502020506024857500507490355560719580b550e1e56550700565d0156075707073342376802005307061e54730e007453570e6a7e04145d00132c585f0c051a115216430354484600416470&fr=00&&txf_fid=417058511c7baa1ee8bc39b9fcab721256dd4d47 HTTP/1.0 Referer: http://mail.qq.com/cgi-bin/ftnExs_download?k=3e663461336477e7f779bc751564051c50545502020506024857500507490355560719580b550e1e56550700565d0156075707073342376802005307061e54730e007453570e6a7e04145d00132c585f0c051a115216430354484600416470&t=exs_ftn_download&code=ef4a3d73 User-Agent: Wget/1.12 (darwin10.7.0) Accept: */* Host: localhost:8080 Connection: Keep-Alive Cookies: qm_ftn_key=56dd4*** [ misuzi Misuzis-Mac ~ ] nc -l -p 8080 GET /ftn_handler/1c9e94a8f3f4a153cbf26642f1ec5cfccc24ef3b793d41a1736006dc55189d149da1ed2389c819b5969c55ff725d63d96ac317eead18aea0d6f149407fbfaf7b/%5Bgfgf5zc%40kf%402dj%5DMaria+Holic.part01.rar?k=3e663461336477e7f779bc751564051c50545502020506024857500507490355560719580b550e1e56550700565d0156075707073342376802005307061e54730e007453570e6a7e04145d00132c585f0c051a115216430354484600416470&fr=00&&txf_fid=417058511c7baa1ee8bc39b9fcab721256dd4d47 HTTP/1.1 User-Agent: aria2/1.11.1 Accept: */*,application/metalink4+xml,application/metalink+xml Host: localhost:8080 Pragma: no-cache Cache-Control: no-cache Referer: http://mail.qq.com/cgi-bin/ftnExs_download?k=3e663461336477e7f779bc751564051c50545502020506024857500507490355560719580b550e1e56550700565d0156075707073342376802005307061e54730e007453570e6a7e04145d00132c585f0c051a115216430354484600416470&t=exs_ftn_download&code=ef4a3d73 Cookies:qm_ftn_key=56dd4***
嗯,我相信敏感的人一眼就会看出问题,没错,aria2的请求少了这么一个空格!
Cookies:[空格!]qm_ftn_key=******
你*的腾讯,你丫server端解析cookie的能力就这么差么,就差了这么一个空格,结果导致会parse不到
于是手工添加了一个空格,搞定。收工。
这文章是在给自己短期内最后一个项目铺底——Aria2Atom
项目目标:Python后端实现下载session管理,并通过web.py制作一个类似transmission-cli的前台
1:实现服务器的下载工具远程管理。
2:给自己的mac的下载也全部转移到aria2c上完成,目前已知的80%的下载工具,测试结果都是个棒槌,没有一个好用的。
目前已经有一个测试的demo写出来了,不过写的比较渣,通过pickle来持久和还原session,试用后虽然已经用在了生产环境上,不过感觉还是很差,于是推倒了重新用SqlAlchemy来管理持久化对象,预计周末出发前搞定雏形并跑在生产环境下。作为长期项目抽时间进行维护。
P.S.
SQLAlchemy的PickleType真是个好东西。