1read 100read
2012年6月プログラム472: Perlを使って2ちゃんねるにHello Worldを書き込む (213) TOP カテ一覧 スレ一覧 2ch元 削除依頼
Borlandにはやられた... (358)
Rubyについて Part47 (697)
★初心者にVisual C++を教えるスレ★ Part38 (355)
推薦図書/必読書のためのスレッド 68 (494)
ファイルの重複検出ツールを作ろうぜ (340)
SDL=Simple DirectMedia Layerでゲームだ (523)

Perlを使って2ちゃんねるにHello Worldを書き込む


1 :07/07/15 〜 最終レス :12/04/08
俺、がんばる。みてて。

2 :
とりあえず、http://www.activestate.com/ からperlをインストール。
というか、すでに入っているんだけど^^;

3 :
さて、httpをしゃべるライブラリには何を使ったら良いだろうか?
むかしLWP::Simpleを使ったことはあるとはいえ、
Simpleっていうぐらいだからもっと高度なことをするときには
別のものがいいのだろうか?

4 :
>3で結果が見えたな

5 :
Perl でやるより Curl でやった方が楽だと思うが...

6 :
なんかCurlって名前のものいくつか無い?
言語? php用ライブラリ?

7 :
あぁ、やっとわかったよ。
http://d.hatena.ne.jp/keyword/curl
ライブラリとしてのlibcurl、それをコマンドラインから使用するcurl。
それとはまったく別の、次世代ウェブ記述言語Curlがあるんだね。
>>5さんがいっているのはコマンドライン用Curl?
悪くは無いんだけど、共有レンタルサーバーでも使えるようなやり方を
目指しているので。でもあとで使うよ!

8 :
ところで、phpではlibcurlを使うのかな?
とりあえず、必要と思われる機能は
UserAgentなどのヘッダやクッキーをいろいろ設定してhtmlを読み込む。
帰ってくるヘッダやクッキーを読み取れる機能。
まあ、シンプルじゃないライブラリなら大概、対応しているだろう。
あと個人的に、proxy対応、https対応のライブラリであってほしい。
さぁ、どんなライブラリがあるのか探すぞ!

9 :
あと認証機能もほしいね。BASIC認証とかいろいろ

10 :
LWPってlibwww-perl の略だったのか。今頃気づいたwww

11 :
>>1
Javaが簡単だお

12 :
あの〜、ずいぶん久方ぶりの書き込みなんですけど僕もperlを使ってみたいなぁと思うんです。
だけどあの英語漬けのサイトで一体どうやればダウンロードできるのかわかりません。
誰か暇つぶしついでに教えていただけませんか?

13 :
とりあえず、肩慣らしにこのスレを読み込むコード
use LWP::Simple;
print get 'http://pc11.2ch.net/test/read.cgi/tech/1184483810/';

14 :
>>11
Javaかぁ、もっと大規模なのを作るときは使うけど、
簡単なツールレベルだと、ちょっと重く感じるな。
あと共有サーバーじゃ大概つかえないし。

15 :
しかし、PerlではLWPを使うのが基本でいいのだろうか?
今はもっといいのがあるのではないかと思いながら、ぐぐっていると
ここみれば出来そうw
http://homepage3.nifty.com/hippo2000/perltips/LWP.html

16 :
うほっ!らくだなw
http://digit.que.ne.jp/work/index.cgi?Perl%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%2FLWP#i3
LWPで、「https://」で始まるSSL使用サイトにアクセスできますか?
編集
できます。
LWPはCrypt::SSLeayがインストールされていれば、自動的にSSL使用サイトへのアクセスも適切に処理してくれます。
アクセス先が「https://」で始まっていても、スクリプトを変える必要はまったくありません。
それどころか、プロトコルが「http」か「https」かということすら判定する必要はありません。

17 :
よし、たいしたことができないであろう、LWP::Simpleじゃなくて、
もっといろいろできるであろうLWP::UserAgentを使ったコートだ
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$ua->agent("Mozilla/8.0");
$req = HTTP::Request->new(GET => 'http://pc11.2ch.net/test/read.cgi/tech/1184483810/');
$req->header('Accept' => 'text/html');
$res = $ua->request($req);
if ($res->is_success) {
print $res->content;
} else {
print "Error: " . $res->status_line . "\n";
}

18 :
荒らしスクリプトをオープンで作ってる・・・

19 :
>>18
違いますよ。ただの2ちゃんねるブラウザですよ。^^;

20 :
ちょっとIEがだすhttpヘッダみたいから、これいれる。
http://www.blunck.info/iehttpheaders/iehttpheaders.html

21 :
あれ?>>20のやつVistaで動かない。XP上のIE7なら動いていたんだが・・・
まあ、それならそれでFirefoxのやつつかうけどさ

22 :
とりあえず、クッキーとか何も持っていない状態でブラウザから普通に書き込むと、
POSTで以下の内容が送られるな。
submit=%8F%91%82%AB%8D%9E%82%DE
FROM=aaa
mail=bbb
MESSAGE=ccc
bbs=tech
key=10桁の数字
time=10桁の数字
そして、以下のクッキーを保存しろといってくる。意味はぐぐればわかるだろう
PON=俺のホスト; expires=Friday, 01-Jan-2010 00:00:00 GMT; path=/
HAP=7桁の数字; expires=Friday, 01-Jan-2010 00:00:00 GMT; path=/
JavaScriptが有効になっていると少し変わるようだ。
いつの間にか、NAME="aaa" MAIL="bbb" がセットされており、
送信するときに、上記のクッキーを送っている。まあ無視して良いだろう。

23 :
WWW::2chに書き込み機能は相変わらず無いのか?

24 :
>>23
そんなのがあるのかw あとでみてみる。
2ちゃんねるを知っている人には当たり前だろうが、
初めて書き込むときには、「上記全てを承諾して書き込む」がでる。
クッキー名hanaにmogeraが設定されているかどうかで判断されるようだ。
これは今現在の話なので将来は変わる?スレごとに違うのかな?
とりあえずクッキーを持たずに書き込むと飛ばされる「上記全てを承諾して書き込む」ページには
>>22で送られる内容にくわえ、hiddenでhana=mogeraが追加されている。(subject=""もあるがスレ立て時に使われるのか?)
そこらへんを見れば、クッキー名や値が変わっても対応できるのかもしれない。

25 :
どうやら、書き込むときに
hana=mogera と
PON = 俺のホスト名 が
無ければいけないようだ。
hana=mogeraはさっきも書いたように同意するかどうか、
PONが変わる(つまり回線をつなぎなおしたとき)は確認画面に飛ばされる。
HAPはなんだろう?無くても書き込めるようだがまたセットさせられる。
さてぐぐるかw

26 :
そういや、ルータを使っている場合に自分のホスト名って
(外部のサーバーなしに)取得できるんかいな?
ルータのUPnP機能に問い合わせればわかるようなことを
以前見た気がするが・・・
まあ、2ちゃんねるに限れば、普通にアクセスして
戻ってきたクッキーをちゃんと記憶すればいいだろうけど。

27 :
ふう。風呂はいっていたよ。
さてのんびりやるぞ!
これからの投稿予定は次のとおりとなっております。お楽しみに。
・POSTを使ったデータ送信
・クッキーの取得
・クッキーの送信
・書き込めた!
・やっぱ文字コードはUNICODEでしょ!
・BASIC認証がある場合は・・・
・それ以外認証ページは・・・
・httpsページにトライ!
・そしてphp版へ・・・
・そしてCurl版へ・・・

28 :
とても楽しめそうにない件について。

29 :
>>27
Perl で書けたのであれば Curl はやらなくて良いと思うよ。
それより書き込みだけじゃなく、スレ立ても出来る様になると嬉しいんじゃない?

30 :
楽しいなあ
楽しいなあ
楽しいなあ

31 :
どうも荒らしスクリプトを作ろうと思っている様にしか思えんなぁ。
そもそも人にきかなきゃわからんレベルの人間がやるものでもないし。

32 :
俺、別に聞いてないし・・・・。

33 :
何でもしたり顔でケチ付けようとする人間はいるもんだよ
自分でも言ってる意味が分かってないから、反論しても無駄

34 :
必死だな。

35 :
何事にも必死に取り組まなければ2ちゃんねらになっちゃう!!
そう子供たちに教えるべきだね。

36 :
キチガイがいるな

37 :
>>36
自己紹介乙!

38 :
test

39 :
あー。書き込めちゃった。まあゆっくりやるかw

40 :
脳内妄想が激しいスレだな

41 :
暗いスレだな

42 :
ていうか君以外のレスは全部 perl で書かれた bot がやってるって知ってた?惟も含めて。

43 :
日本語OK?

44 :
縺薙l縺ッ繝悶Λ繧ヲ繧カ縺九iUTF8縺ァ譖ク縺崎セシ繧薙□譁蟄

45 :
はいはい、またーりいくよ。
テスト用に、サーバーに送信したデータをそのまま表示するだけのphpコード
ちゃんと送られているかこれで確認!
<?php
header("Content-Type: text/plain");
print "[REQUEST]\n"; print_r(apache_request_headers());
print "[SERVER]\n"; print_r($_SERVER);
print "[GET]\n"; print_r($_GET);
print "[POST]\n"; print_r($_POST);
print "[COOKIE]\n"; print_r($_COOKIE);
print "[FILES]\n"; print_r($_FILES);
?>
IEはダウンロードしやがるぜ。けっ

46 :
さあて、いよいよpostだ。実際に動かすときは自分のサーバーに置いた
スクリプト(>>45でいい)に向けてpostするように。
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$ua->agent("Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1)");
$req = HTTP::Request->new(POST => 'http://www.example.com/test.php?getdata=gettest');
$req->header(
'Accept' => '*/*',
'Accept-Language' => 'ja-JP,en-US;q=0.5',
'Referer' => 'http://www.example.com/',
);
$req->content_type('application/x-www-form-urlencoded');
$req->content('postdata=posttest');
print $ua->request($req)->as_string;

47 :
Hello World

48 :
なんか資料見つけたので追加
http://age.s22.xrea.com/talk2ch/

49 :
Hello World 2

50 :
うーん。postするときのtimeの数字ってなんだろう?
日付に直すと Sun, 02 Jan 2005 17:55:08 GMT なんだが、
どこから取得すればいいのだ?
htmlのフォームから取得できるのはわかるが・・・

51 :
Hello World 3

52 :
Hello World 3

53 :
Hello World 3

54 :
Hello World 3

55 :
よくわからんが、現在時刻マイナス? で書き込めるようだ。

56 :
ここでテストするのはやめれ。運営にチクるぜー?

57 :
通報しますた

58 :
あぼーんだらけの某板に書いてみるとか

59 :
最悪板あたりでやればいいのでは

60 :
結局どこいったん>

61 :
>>60
書き込めるようになって、飽きました。

62 :
他の鯖でも試してみた?

63 :
Hello, World

64 :
僕も最近Perlを始めたので hello, world を作ってみました
#!/usr/bin/perl
use strict;
my $hello = "hello, world";
my $tmp = './hello.world';
open OUT, "> $tmp" or die "$!";
flock OUT, 2;
print OUT $hello;
close OUT;
open IN, $tmp or die "$!";
flock IN, 2;
my @in = <IN>;
close IN;
unlink $tmp;
foreach(@in){
 s/$hello/herro, world/i;
}
my $res = `ping -c 4 www.google.com`;
undef $res;
print $hello;
my @n = qq|\n|;
foreach(@n){
 print;
}

65 :
Unrecognized character \x81 at C:/Users/Dai/workspace/PerlTest1/MainTest2.pl line 19.

66 :
ヒント:全角スペース

67 :
このスレは車輪の再発明をするスレのようですね
Age2ch Part14
http://pc11.2ch.net/test/read.cgi/software/1118219419/l50

68 :
みんな車輪の再開発をして技術を身に付けるんだよ。
弟子は師匠の筆の跡を盗むもんだ。

69 :
perlだけでなくrubyやpythonその他
いろいろな言語でこれをするならどれが一番きれいだと思う?

70 :
elisp

71 :
>>22
これってどうやって調べたん?

72 :
hello world

73 :
http://pc11.2ch.net/test/read.cgi/unix/1019380983/

74 :
pythonだったら2ch書込用ライブラリ作ったけど

75 :
omaeka

76 :


77 :
cgiからも書き込めるようにしてみた。
だからアク禁くらってもレンタルサーバーにcgiぶっこめばいくらでも書き込める。

78 :


79 :


80 :
てすと

81 :
すまん
誤爆した。

82 :
すまん
誤爆した。

83 :
すまん
誤爆した。

84 :
てすと

85 :
てすと

86 :
ActivePerl-5.10.0.1002-MSWin32-x86-283697.msi
を保存して
ダブルクイックすると
『インストール パッケージを開くことができませんでした。アプリケーションベンダに問い合わせ、このパッケージが有効なWindowsインストーラパッケージであることを確認してください。』  と出るのですが
何が問題あるのでしょうか

87 :
>>86 
インストーラパッケージが壊れていまし。
保存のインスト不良でした
早とちり
で、しまったシマッタ!島倉千恵子!
(;^_^A フキフキ

88 :
とりあえず乙

89 :
>>86
亀レスだがそれはファイルが壊れてるだけ。
俺もこの前WIN再インスコしたときになった。
activeperlのある鯖が不安定っぽいからリジューム機能のついてるツール使ってダウソしたほうがいいよ。

90 :
test

91 :
クライアントがクッキーを受け入れているかどうかってどうやって判断しているんでしょうか?

92 :
食わせたクッキーを吐き出させればいいよ。

93 :
test

94 :
wget --referer=http://pc11.2ch.net --save-cookie=c --load-cookie=c --post-data='hana=mogera&bbs=tech&key=1184483810&time=1&mail=&FROM=&MESSAGE=test' http://pc11.2ch.net/test/bbs.cgi

95 :
#!/usr/bin/perl
use warnings;
use strict;
use WWW::Mechanize;
my $url = 'http://pc11.2ch.net/test/read.cgi/tech/1184483810/';
my $mail = 'sage';
my $text = 'Hellow World;
my $mech = WWW::Mechanize->new;
$mech->agent_alias('Linux Mozilla');
$mech->get($url);
$mech->submit_form(
form_number => 2,
fields=>{
FROM => '',
mail => $mail,
MESSAGE => $text,
},
);
print $mech->content;
$mech->submit;
print $mech->content;
なんで、これでじゃかきこめないわけ?

96 :
hello world

97 :
ゆきさん、好きだ。

98 :
そんぽぷへるめ

99 :
http://pc11.2ch.net/test/read.cgi/software/1118219419/850 より
use utf8;
binmode STDOUT => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
use open IO => ":encoding(cp932)";
use Win32::IEAutomation;
use Encode;
$ie = Win32::IEAutomation->new( visible => 1, maximize => 0);
$ie->gotoURL('http://pc11.2ch.net/test/read.cgi/software/1118219419/l1n');
$ie->getTextBox('name:', 'FROM')->SetValue(encode('cp932', "名無しさん@お腹すいた") );
$ie->getTextBox('name:', 'mail')->SetValue('sage');
$ie->getTextArea('name:', 'MESSAGE')->SetValue(encode('cp932', ">>845\nソースきぼ〜ん") ) ;
$ie->getButton('name:', 'submit')->Click(1) ;
sleep(10);
$ie->getButton('name:', 'submit')->Click(1) ; # 初回投稿時の確認ウィンドウ用

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
D言語 Part29 (763)
【C++】高速化手法【SSE】 (806)
Lisp Scheme Part34 (659)
[無料でラクラクJava帳票作成] JasperReports使い集合 (315)
だめです! HSP厨は絶対に犯罪です。 (943)
強いAI(人工知能)ver0.0.1 (889)
--log9.info------------------
コーエー「PSVitaはPS3版のデータをそのまま持ってきて、最適化するだけである程度は動いてしまう」 (221)
スクエニ野村氏 「NGPには自分も何度かアイディアを出させてもらった NGP向けソフトはまだ言えない」 (316)
【PS3】『龍が如く OF THE END』40万本突破、シリーズ累計は500万本に! (375)
岩田「Wiiはもう限界」 (784)
【業界】Apple「iPod touchはゲーム機として、ニンテンドー3DSより上だ」と宣言 (686)
Microsoft、Xbox 360が日本市場で撤退との一部報道に回答 (220)
【PSVita】「PSヴィータ」苦戦 人気ソフト不在…価格見直しもありえる? (335)
【PS3】『初音ミク DT 2nd』今夏配信予定! ただでさえ天使のミクさんがPS3でより美しく!! (268)
3DSの不具合をまとめつつ任天堂信者のゲ速荒らしを観察するスレ (941)
小島プロダクション、PS3とNGP/PSPが連動する『トランスファリング』を発表! (300)
【PS3/Xbox360】セガ名越氏、未来の日本を舞台にした新作FPS「バイナリードメン」を発表! (345)
【PSVita】 ペルソナはVitaへ! 『ペルソナ4 ザ・ゴールデン』 2012年春 発売決定! (474)
ファルコム社長 「NGPのロンチにあわせて、新作RPGを開発中。」 (419)
UBS証券、任天堂の投資判断を格下げ 3DS・WiiUともに現行策ではライトユーザーの回帰が見え難い。 (486)
【GT vs Forza】Microsoftによるインターネット上での組織票の呼びかけやサクラが発覚!4 (255)
納得できる? 米任天堂・レジー社長が語る、Wiiにソフトが少ない2つの理由 (605)
--log55.com------------------
ハズビーンヒーローズ
Devil May Cry 総合【mission 306】
【Switch】Splatoon2/スプラトゥーン2 不満・愚痴スレ Part6
Dragon'sDogma -ドラゴンズドグマ- 462
【NS/WiiU/3DS】amiibo (アミーボ)総合スレ38
【PS4/VITA】みんなでスペランカーZ 32探険目【基本無料】
【PS4/XB1】Fortnite 直挿しマウス専用スレ Part3【フォートナイト】
【Switch】Splatoon2/スプラトゥーン2 ギア交換スレ6