APR

14

Thu

Author:EMINARCISSUS

被拍砖22次,接着砸!

这是一个历史性遗留问题,之前一直没解决。这两天在写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真是个好东西。

Tags:

归档:Technology

相关文章
smiley