寻找可能的网址参数

时间:2019-09-19 19:31:29

标签: php ruby mechanize

我正在尝试用Ruby / Mechanize编写网络抓取工具。我要实现的一件事是可以找到潜在URL参数的函数。这是一个片段:

require 'mechanize'
def find_parameters(url)
    mechanize = Mechanize.new
    result = []
    # build list of potential parameters at URL
    result # return
end

想象一下,发送传递通过URL http://example.com/。在example.com上有一个index.php文件,该文件接受URL参数调用baz,并将该参数的值打印到页面上。

<?php
    if (isset($_GET['baz'])) {
        echo $_GET['baz'];
    }
?>

因此http://example.com?baz=123将转到打印123的页面。我们知道通过查看源代码,baz是一个潜在的参数,有没有办法让Mechanize查找所有潜在参数并返回它们的列表?

例如:find_parameters('http://example.com/') => ['baz']

1 个答案:

答案 0 :(得分:0)

您可以调整字符串:

require 'mechanize'
def find_parameters(url)
  mechanize = Mechanize.new
  result = []
  mechanize.get(url)  #go to the page
  # get the current page, split in the possible parameters list, split by parameters
  # (rescue in case there are no params)
  ( mechanize.page.uri.to_s.split("?")[1].split("&") rescue []).each do |key_val| 
    # split the pair of param and value, and store the param name
    result << key_val.split("=")[0]
  end
  return result
end