• 9884阅读
  • 10回复

用qhttp返回403错误 [复制链接]

上一主题 下一主题
离线koyou
 
只看楼主 倒序阅读 楼主  发表于: 2009-02-17
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
在用qt中的qhttp是遇到了这样的问题:在访问一个网址时(一个flv的真实地址),总是不能下载...用qt中自带的demo程序一样...用statusCode返回403...请朋友们帮忙给点建议
只看该作者 1楼 发表于: 2009-02-17
八成没填引用吧
离线koyou
只看该作者 2楼 发表于: 2009-02-17
什么的引用?二楼的朋友能不能说明白一点.....
网站在IE里或者用curl是可以下载的...用QT提示forbiden
只看该作者 3楼 发表于: 2009-02-17
给地址测试
离线koyou
只看该作者 4楼 发表于: 2009-02-19
只看该作者 5楼 发表于: 2009-02-19
这是QHttp那个例子的HttpHeader通讯部分
  1. ClientData
  2. GET /smile HTTP/1.1
  3. Connection: Keep-Alive
  4. Host: smile-clb52.nicovideo.jp
  5. ServerData
  6. HTTP/1.1 403 Forbidden
  7. Content-type: text/plain
  8. Expires: Sat, 21 Feb 2009 02:34:01 GMT
  9. Cache-Control: max-age=144000
  10. Content-Length: 13
  11. Date: Thu, 19 Feb 2009 10:34:01 GMT
  12. Server: lighttpd
  13. Via: 1.0 jpcnw2slh007 (Jaguar/3.0-62)
  14. Connection: close
  15. 403 Forbidden

这是flashget的
  1. Thu Feb 19 18:30:14 2009 GET /smile?v=2555194.86079 HTTP/1.1
  2. Thu Feb 19 18:30:14 2009 Host: smile-clb52.nicovideo.jp
  3. Thu Feb 19 18:30:14 2009 Accept: */*
  4. Thu Feb 19 18:30:14 2009 Referer: [url]http://smile-clb52.nicovideo.jp[/url]
  5. Thu Feb 19 18:30:14 2009 Cookie: __utma=8292653.1168244159.1233746351.1233746351.1233746351.1; __utmz=8292653.1233746351.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); user_session=user_session_4392669_5797953601075545588; nicohistory=,nm6040452:1233746349:1233746349:b8634ce9c884caaa:1,nm3862136:1233746349:1233746349:86c3f4c1a08501d5:1
  6. Thu Feb 19 18:30:14 2009 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5
  7. Thu Feb 19 18:30:14 2009 Pragma: no-cache
  8. Thu Feb 19 18:30:14 2009 Cache-Control: no-cache
  9. Thu Feb 19 18:30:14 2009 Connection: close
  10. Thu Feb 19 18:30:16 2009 HTTP/1.1 200 OK
  11. Thu Feb 19 18:30:16 2009 Date: Thu, 19 Feb 2009 10:29:39 GMT
  12. Thu Feb 19 18:30:16 2009 Content-Type: video/flv
  13. Thu Feb 19 18:30:16 2009 Content-Disposition: inline; filename="smile.flv"
  14. Thu Feb 19 18:30:16 2009 Cache-Control: max-age=144000
  15. Thu Feb 19 18:30:16 2009 ETag: "27266817"
  16. Thu Feb 19 18:30:16 2009 Accept-Ranges: bytes
  17. Thu Feb 19 18:30:16 2009 Last-Modified: Fri, 07 Mar 2008 16:54:58 GMT
  18. Thu Feb 19 18:30:16 2009 Content-Length: 27266817
  19. Thu Feb 19 18:30:16 2009 Server: lighttpd
  20. Thu Feb 19 18:30:16 2009 Via: 1.0 jpcnw2slh015 (Jaguar/3.0-62)
  21. Thu Feb 19 18:30:16 2009 Age: 0
  22. Thu Feb 19 18:30:16 2009 Expires: Sat, 21 Feb 2009 02:29:35 GMT
  23. Thu Feb 19 18:30:16 2009 Connection: close
  24. Thu Feb 19 18:30:16 2009 开始接受数据!


很明显,没Referer人家不理你,关不关Cookie的事情就不知道了

另外……如果是做抓nicovideo的软件,我能不能求一份……
[ 此贴被都市无名者在2009-02-19 19:44重新编辑 ]
离线koyou
只看该作者 6楼 发表于: 2009-02-19
谢谢楼上的朋友帮忙做的分析...还是这个问题...我想通过qt设置referer应该如何设置呢?还有就是“HttpHeader通讯部分”这部分信息是怎么抓出来的呢?
只看该作者 7楼 发表于: 2009-02-19
引用第6楼koyou于2009-02-19 19:44发表的  :
谢谢楼上的朋友帮忙做的分析...还是这个问题...我想通过qt设置referer应该如何设置呢?还有就是“HttpHeader通讯部分”这部分信息是怎么抓出来的呢?

referer一般填网站根目录地址就可以。至于http头么,去看如何设置qhttprequestheader吧
cookie的话要直接到浏览器里抓了估计

如果做抓nico的,做完我想求一份……
离线koyou
只看该作者 8楼 发表于: 2009-02-19
主要是我网络小白...刚接触这方面想做个nico的下载器...看到qt里有源码就想利用下...
离线unlimiteddig
只看该作者 9楼 发表于: 2009-02-19
应该不是refer的问题, 403错误是应为GET的URL是“http://smile-clb52.nicovideo.jp/smile

example里的http client那个例子为了判断下载文件的文件名,将URL里的参数 “v=2555194.86079” 给去了。

可看到代码中有
  1. QByteArray path = QUrl::toPercentEncoding(url.path(), "![    wind_phpcode_1    ]'()*+,;=:@/");
  2.     if (path.isEmpty())
  3.         path = "/";
  4.     httpGetId = http->get(path, file);


url.path()取得 “http://smile-clb52.nicovideo.jp/smile” 所以有如下requestHeader

GET /smile HTTP/1.1
Connection: Keep-Alive
Host: smile-clb52.nicovideo.jp


直接httpGetId = http->get("http://smile-clb52.nicovideo.jp/smile?v=2555194.86079", file);
测试成功
[ 此贴被unlimiteddig在2009-02-19 21:24重新编辑 ]
只看该作者 10楼 发表于: 2009-02-20
引用第9楼unlimiteddig于2009-02-19 21:12发表的  :
应该不是refer的问题, 403错误是应为GET的URL是“http://smile-clb52.nicovideo.jp/smile”
example里的http client那个例子为了判断下载文件的文件名,将URL里的参数 “v=2555194.86079” 给去了。
可看到代码中有
.......

还真是OTL,我自己没仔细看截取的……
快速回复
限100 字节
 
上一个 下一个