網絡上有一個FLV文件,可以直接在Chrome中下載。該檔案是由中央電視臺(中央電視臺)出版的電視節目。中央電視臺是一家非營利性國有廣播電臺,由中國納稅人出資,允許我們在不侵犯版權的情況下下載他們的內容。模擬瀏覽器下載文件?
使用wget
,我可以從其他地址下載文件,但不能從Chrome中的地址下載文件。
這是我一直試圖做的事:
url='http://114.80.235.200/f4v/94/163005294.h264_1.f4v?10000&key=7b9b1155dc632cbab92027511adcb300401443020d&playtype=1&tk=163659644989925531390490125&brt=2&bc=0&nt=0&du=1496650&ispid=23&rc=200&inf=1&si=11000&npc=1606&pp=0&ul=2&mt=-1&sid=10000&au=0&pc=0&cip=222.73.44.31&hf=0&id=tudou&itemid=135558267&fi=163005294&sz=59138302'
wget -c $url --user-agent="" -O xfgs.f4v
這不起作用或者:
wget -c $url -O xfgs.f4v
輸出是:
Connecting to 118.26.57.12:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2013-02-13 09:50:42 ERROR 403: Forbidden.
我在做什麼錯誤?
我最終想用Python庫mechanize
下載它。這裏是代碼我使用的爲:
import mechanize
br = mechanize.Browser()
br = mechanize.Browser()
br.set_handle_robots(False)
br.set_handle_equiv(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
url='http://114.80.235.200/f4v/94/163005294.h264_1.f4v?10000&key=7b9b1155dc632cbab92027511adcb300401443020d&playtype=1&tk=163659644989925531390490125&brt=2&bc=0&nt=0&du=1496650&ispid=23&rc=200&inf=1&si=11000&npc=1606&pp=0&ul=2&mt=-1&sid=10000&au=0&pc=0&cip=222.73.44.31&hf=0&id=tudou&itemid=135558267&fi=163005294&sz=59138302'
r = br.open(url).read()
tofile=open("/tmp/xfgs.f4v","w")
tofile.write(r)
tofile.close()
這是結果:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/mechanize/_mechanize.py", line 203, in open
return self._mech_open(url, data, timeout=timeout)
File "/usr/lib/python2.7/dist-packages/mechanize/_mechanize.py", line 255, in _mech_open
raise response
mechanize._response.httperror_seek_wrapper: HTTP Error 403: Forbidden
誰能解釋如何獲得mechanize
代碼工作嗎?
如果您使用:'user_agent ='Mozilla/5.0(X11; U; Linux i686; en-US; rv:1.9.0.1)Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1)''然後' wget -c「$ {url}」--user-agent =「$ {user_agent}」-O x fgs.f4v'?如果這不起作用,那麼Python可能無法幫助你! – Johnsyweb 2013-02-13 02:45:14
您得到403響應的原因很可能是因爲當您在瀏覽器中訪問網站時,網站會保持狀態,最有可能是cookie。這就是YouTube所做的。從瀏覽器中導出您的cookie並將其設置在wget中(您可以簡單地使用「Cookie:」標題),它應該可以工作。 – 2013-02-13 02:47:17
@Johnsyweb在大多數情況下,Python可以完美地模擬瀏覽器(當然,除了通過JavaScript等設置cookie的奇怪網站之外)。 – 2013-02-13 02:49:13