Как заменить определенную строку, найденную в URL, взятом из консоли, содержимым файла, найденным в каждой строке, записанной в текстовом файле в Ruby? - PullRequest
0 голосов
/ 01 февраля 2012

Я хочу заменить нечеткое слово, которое было написано в URL, взятом из консоли, на содержимое текстового файла, содержащее по одной строке в строке.После замены этого нечеткого слова содержимым файла, нужно запустить запрос http с этим замененным файлом содержимого и сохранить ответы с измененными запросами в новом файле.

Я написал так, но получаю сообщение об ошибке:

fuzz1.rb:16: private method `gsub' called for #<URI::HTTP:0x2969040> (NoMethodError)

Код здесь:

require 'net/http'

puts "Enter Target:\n"
target = URI(gets())
new_reference = target
a1 = target.clone
Net::HTTP.start(target.host, target.port) do |http|
request = Net::HTTP::Get.new target.request_uri
response = http.request request 
puts response.body
end
puts "File contents:\n"
f= File.open("fuzz.txt","r")
while line = f.gets do
    puts "Attack value: #{line}"
    b = a1.gsub('fuzz','#{line}')
    c = b
    Net::HTTP.start(c.host, c.port) do |http|
    request = Net::HTTP::Get.new c.request_uri
    response = http.request request 
    puts response.body
    end
end

Понятия не имею, почему возникает эта ошибка gsub, а не замена нечеткого слова, найденного в URL, на содержимое строки файла.

1 Ответ

1 голос
/ 01 февраля 2012

a1 - это объект URI, у него нет метода gsub. Вы должны привести его к строке. Попробуйте это

    b = URI.parse(a1.to_s.gsub('fuzz','#{line}'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...