我正在尝试用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']
答案 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