확실히하고, 기계화 또는 노코 기리도 자바 스크립트를 실행하기 때문입니다.
대신 Selenium을 사용할 수 있습니다. 이 같은
뭔가 :
require 'selenium-webdriver'
class AlertChecker
Driver = Selenium::WebDriver.for :firefox
def initialize(url)
Driver.navigate.to url
end
def raise_alert(text)
Driver.execute_script "alert('#{text}')"
self
end
def safely_get_alert
begin
Driver.switch_to.alert
rescue Selenium::WebDriver::Error::NoAlertOpenError
end
end
end
사용법 :
alert_checker = AlertChecker.new("http://my.website")
alert = alert_checker.safely_get_alert
# => nil
alert_checker.raise_alert("hack")
alert = alert_checker.safely_get_alert
puts alert.text
# => 'hack'
# As far as I'm aware Selenium doesn't have a built-in way
# to tell you if it's an alert, confirm, or prompt.
# But you know it's a prompt, for example, you could also send
# keys before accepting or dismissing
alert.accept
alert = alert_checker.safely_get_alert
# => nil
경고의 셀레늄을 처리하는 몇 가지 까다로운 일이 생각이 있습니다.
rescue
또는 try
과 같은 코드를 사용하지 않고 코드에서 유형 (프롬프트, 확인 또는 알림)을 감지 할 수있는 방법이 없습니다. 모든 것은 switch_to.alert
을 통해 도달합니다.
또한 브라우저에 경고가 열려 있으면 경고를 처리하지 않는 한 후속 명령을 실행할 수 없습니다. 경고가 열려있는 동안 navigate.to
을 시도해 보겠습니다. 경고 메시지를 처리하지 못했습니다. 및 navigate.to
명령을 다시 실행해야합니다. 이 오류가 발생하면 경고 개체도 손실됩니다.
그것은이 방법으로 제어 구조와 같은 구조를 사용하여 약간의 호소력이다 그러나 나는 다른 옵션
글쎄, HTML을 통해 그것을 찾을 수있는 방법이 있을까요? 마찬가지로 구문 분석 할 스크립트 태그가 있습니까? – papasmurf
아마도 XSS를 알기위한 가장 쉬운 방법은 Javascript를 실행하는 것입니다 (Nokogiri/Mechanize와 함께 할 수는 없습니다). –
그래, 나는 이것이 쉽게 될 것이라고 생각하지 않았다. – papasmurf