Ruby를 이용해서 예약 시스템을 편하게 사용하세요.

3490 단어 RubyNokogiri

개시하다


안녕하세요.저는 GMO 광고 마케팅의 Yooshishin입니다.
여러분은 평소에 자주 사용하는 인터넷 서비스가 있습니까?
나는 최근에 예약 시스템을 자주 사용하지만 매번 같은 조작을 해서 효율이 높지 않다고 느낀다.
많은 사람들이 편리하게 사용하기 위해 만들었다고 생각하지만 사람마다 느끼는 방법이 다르기 때문에 정해진 순서가 있다면 버튼 하나만 누르면 평소 설정을 완성할 수 있어 편리할 뿐만 아니라 자기 전용 화면도 필요할 수 있다.
이번에는 이런 예약 시스템을 더욱 쉽게 사용할 수 있도록 하는 해커를 생각해 보고 싶습니다.

목표


예약 시스템에서 필요한 정보를 꺼내 사용하기 편리한 JSON 형식으로 성형하고 임의의 응답을 되돌려주는 것이 목표다.
JSON 형식이라면 데이터를 기반으로 화면을 쉽게 만들어 원하는 대로 조작할 수 있다.

개발 환경


우선 개발 환경을 조정하다.
이번에 주로 사용하는 라이브러리는 노코지리입니다.
HTML이라는 소재에서 톱니에 필요한 것을 삽입하는 인상을 준다.
루비가 사용할 수 있는 상태라면 다음 명령을 사용하여 설치할 수 있습니다.
gem install nokogiri
Rails를 사용할 때 이 gem이 포함되어 있으므로 bundle install을 통해 추가합니다.
공식 사이트
http://www.nokogiri.org/
다음은 공식 사이트의 샘플입니다.
require 'nokogiri'
require 'open-uri'
# HTMLドキュメントを取得し、解析
doc = Nokogiri::HTML(open('https://nokogiri.org/tutorials/installing_nokogiri.html'))

puts "### Search for nodes by css"
doc.css('nav ul.menu li a', 'article h2').each do |link|
  puts link.content
end
puts "### Search for nodes by xpath"
doc.xpath('//nav//ul//li/a', '//article//h2').each do |link|
  puts link.content
end

puts "### Or mix and match."
doc.search('nav ul.menu li a', '//article//h2').each do |link|
  puts link.content
end
xpass, css를 사용하여 응답을 확인하는 동시에 목적 데이터를 얻습니다

분석하다.


다음은 해석입니다.
크롬의 경우 화면을 마우스 오른쪽 버튼으로 클릭하고 검증을 선택하면 HTML 구조를 확인할 수 있다.
HTML 구조에서 피쳐를 요약합니다.

평소 사용하던 WEB 사이트라면 어떤 구조로, 어떤 데이터를 원하는지 바로 상상할 수 있고, 어떤 불만을 느끼면 이런 개선 방안을 쉽게 사용할 수 있다고 생각합니다.
대상 시스템에서 매일 몇 개의 시간이 있고 시간마다 예약 범위가 있다.

설계


전용 화면을 제작하고 등록된 설정 정보에 따라 예약을 할 수 있으면 편리하기 때문에 JSON 형식의 응답에 답장을 하고 거기서부터 화면을 표시합니다.
분석할 때의 특징을 보면 다음과 같은 JSON 형식을 사용하면 사용하기 쉽기 때문에 데이터를 성형한다.
[{"day"=>"12/23", "times"=>[
  {"time"=>"12:00", "stock"=>0},
  {"time"=>"12:15", "stock"=>0}, {"time"=>"12:30", "stock"=>0}, {"time"=>"12:45", "stock"=>0},...
]

데이터 획득


이상적인 모양이 확정되면 노코지리로 데이터를 잘라서 디자인된 JSON 형식에 저장합니다.
데이터를 만드는 방법을 호출할 준비가 되면 JSON API화가 완료됩니다.
대상 웹사이트를 롤업 성형한 JSON을 되돌려 Rails 화면에 표시한다.

총결산


위의 절차에 따라 JSON API화를 수행할 수 있습니다.
그렇게 할 수 있다면 이후 편리하게 사용할 수 있는 화면을 만들 수 있고, 설정된 자동 예약, 채팅시스템과의 연계 등에 따라 내 마음대로 조작할 수 있을 것 같다.
예약 시스템뿐만 아니라 다른 메커니즘에도 적용할 수 있는데, 매일 많은 시간을 소비하는 시스템이 있다면 사용하기 쉬운 해킹 행위에 대해 논의해 볼 수 있을까?
주의점은 실제 사용 시점에 자동 예약을 하면 수동 방문에 비해 부하가 달라지지 않지만, 일괄 처리된 예약의 공문서 알림 등을 사용하면 정기 방문의 실현이 서버의 부하가 될 수 있으므로 제어하는 것이 좋다는 점이다.
그게 다야.
내일 M.N씨.의'타셀의 회유율을 조금 최적화시켰다면'에 따르면.
계속 즐겨주세요GMO 광고 마케팅 Advent Calendar 2019!

좋은 웹페이지 즐겨찾기