2017-11-24 12 views
0

이 코드는 URL을 스크립트에 직접 제공 할 때 잘 작동합니다.사용자 입력을 통해 URL을 가져 오려고하면 Ruby open-uri가 잘못된 uri 오류를 발생시킵니다. 왜?

require 'nokogiri' 
require 'open-uri' 

get_url = "http://google.com" 

doc = Nokogiri::HTML(open(get_url)) 
puts doc 

나는 사용자 입력에 "http://google.com"를 입력 시도했지만이 작동하지 않고 나쁜 URI 오류가 발생하고

해당 파일 또는 디렉토리 @의 rb_sysopen

require 'nokogiri' 
require 'open-uri' 

get_url = gets 

doc = Nokogiri::HTML(open(get_url)) 
puts doc 
을 말한다

아무도 내가 뭘 잘못하고 있다고 말할 수 있습니까? 나는 Google에서 똑바로 대답을 찾고 있지만 시도합니다.

+0

을 작동해야하지만 나는 그것이 가능성이 XSS 공격을 방지하기 위해 발생 생각합니다. 사용자 입력으로부터 URL을 얻는 것은 매우 위험합니다.이 방법을 살필하는 방법을 살펴볼 수는 있지만, 당신이하는 일은 나에게 매우 위험한 것처럼 보입니다. – SRack

+0

Regex를 사용하여 열려 있는지 확인해야합니까 (get_url)? – Meimo

+2

'gets.chomp'를 사용해야하기 때문입니까? 현재 코드 샘플에는 후행 줄 바꿈이 있습니다. –

답변

2

gets 문자열 끝에 새 줄 문자를 추가합니다. 나는 아래에서 이것을 제거하기 위해 도착에 chomp을 사용했다.

내가 확실하지 않다 지금

require 'nokogiri' 
require 'open-uri' 

get_url = gets.chomp 

doc = Nokogiri::HTML(open(get_url)) 
puts doc 
+0

오 !!! 고마워요. 나는 그게 그렇게 간단하지 않다고 생각하지 않았다 ... – Meimo