てs。
------ FC2やlivedoorのブログへコメント投下 -------
SOCKSプロキシ・・・ ていうかtorをmechanizeに対応するのを想定
NSAの件もあるし、torの匿名性も過信はダメです
# -----------------------------
FC2もlivedoorもコメントフォームのname属性がcomment_formになってるから同じソースで途中までいける
で、BOT対策か何か知らないけど二重フォームにしてる場合がたまにあるので
agent.page.forms.select do |m|
m.name == "comment_form"
end.last
で一番後ろの取って、とりあえずの対応・・・ 本当はもう少し賢く探さないといけない
あとは、よくわかんないけど書き込めないブログが結構ある
js絡んでる気配がするから、watirでやんないと本格的なのは作れないかも
watirでやる場合は、
IEとかにtorのsocksプロキシを適用して、
そっから普通に書く
SOCKSプロキシ・・・ ていうかtorをmechanizeに対応するのを想定
NSAの件もあるし、torの匿名性も過信はダメです
#coding:utf-8
require 'kconv'
require "yaml"
require "mechanize"
require "socksify"
require 'socksify/http'
# Mechanize: call @agent.set_socks(addr, port) before using
# any of it's methods; it might be working in other cases,
# but I just didn't tried :)
class Mechanize::HTTP::Agent
public
def set_socks addr, port
set_http unless @http
class << @http
attr_accessor :socks_addr, :socks_port
def http_class
Net::HTTP.SOCKSProxy(socks_addr, socks_port)
end
end
@http.socks_addr = addr
@http.socks_port = port
end
end
# --------------------------------------------------
SOCKS = true
ad = "http://yuyyuyyuyyu.blog.fc2.com/blog-entry-97.html"
rem = [
"にゃんにゃ" , 9 ,
"にゃわわ" , 4 ,
].each_slice(2).map do | a , b | [a] * b end.flatten
agent = Mechanize.new
agent.agent.set_socks('127.0.0.1', 9150) if SOCKS
agent.get ad
p ad
# p agent.page.forms
# 同じ名前のformが二重になってる時用の対策 ----------
f =
agent.page.forms.select do |m|
m.name == "comment_form"
end.last
p f
comment = rem.sample
if f.field_with(:name => "body")
p "live door"
f.body = comment
elsif f.field_with(:name => "comment[body]")
p "fc 2"
f.field_with(:name => "comment[body]").value = comment
f.field_with(:name => "comment[name]").value = "_"
end
f.click_button
p :submit
# puts agent.page.body
# -----------------------------
FC2もlivedoorもコメントフォームのname属性がcomment_formになってるから同じソースで途中までいける
で、BOT対策か何か知らないけど二重フォームにしてる場合がたまにあるので
agent.page.forms.select do |m|
m.name == "comment_form"
end.last
で一番後ろの取って、とりあえずの対応・・・ 本当はもう少し賢く探さないといけない
あとは、よくわかんないけど書き込めないブログが結構ある
js絡んでる気配がするから、watirでやんないと本格的なのは作れないかも
watirでやる場合は、
IEとかにtorのsocksプロキシを適用して、
そっから普通に書く
comment