NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    에디터 웹소켓 API의 웹브라우저 콘트롤을 이용해서 UserAgent와 Referer를 변경하는 방법. (RandomUserAgent…

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 웹프로젝트를 진행하면서 이미지 URL을 통해 접근은 가능하지만 개발중인 웹프로젝트의 서비스가 호출하지 못하는 경험을 해본적이 있을겁니다. 브라우저에 직접적으로 접근은 가능하지만 localhost의 개발 프로젝트는 특정 사이트에서만 접근이 안될 수 있습니다. Image URL이 지정된 CDN에 설정이 되어 있는건 아닌지 의심해봐야 합니다. 이런 문제들을 해결하기 위해 Referer를 사용하는데요. 요청한 출처나 URL을 헤더에 담아서 같이 전달해줘야 합니다. 서버에서 비정상적인 접근을 판단할 때 Referer를 분석해서 블럭 처리합니다.

    Referer Policy

    • <meta name="referrer" content="no-referrer" />
      - 전달하지 않음
    • <meta name="referrer" content="origin" />
      - 도메인 정보만 전달
    • <meta name="referrer" content="unsafe-url" />
      - 모든 주소를 전달
    • <meta name="referrer" content="strict-origin" />
      - HTTP에서 HTTP로 갈때 or HTTPS에서 HTTPS로 갈때 도메인 전달
    • <meta name="referrer" content="no-referrer-when-downgrade" />
      - HTTP에서 HTTP로 갈때 or HTTPS에서 HTTPS로 갈때 Full URL 전달
    • <meta name="referrer" content="origin-when-cross-origin" />
      - origin이 같은 경우 Full URL, 다른경우 도메인만 전달
    • <meta name="referrer" content="same-origin" />
      - origin이 같은 경우에만 Full URL 전달
    • <meta name="referrer" content="strict-origin-when-cross-origin" />
      - 도메인이 다르고 + HTTP에서 HTTP로 갈때 or HTTPS에서 HTTPS로 갈때 도메인 전달, 같은 도메인일 경우 Full URL 전달

     

    이 예제를 테스트하기 위해 웹소켓 API를 사용하기 위한 기본적인 셋팅은 해야 하는데요. 기본 셋팅 관련 내용은 아래 글을 참고하세요.

    기본 구성 참고 ]

     

    기본 구성 참고 내용을 보고, 기본 구성을 완료 했으면 아래와 같은 스크립트가 만들어졌을겁니다.

    IuBqCrG.png

     

     

    아래와 같이 웹소켓 명령을 2개 더 추가하세요. 그리고, 첫번째 웹소켓 명령에 아래와 같이 속성을 설정하세요.

    • 메소드 선택: SetExtraHTTTPHeaders
    • 파라메터: { "headers":["Referer", "http://ngmsoftware.com"] }

    hRzNw5s.png

     

     

    두번째 웹소켓 명령 RandomUserAgent는 아래와 같이 속성을 설정하세요.

    • 메소드 선택: RandomUserAgent
    • 파라메터: N/A

    kjtFMQ3.png

     

     

    참고로 [ 랜덤 문자열 조합 ] 액션과 같이 사용하면 랜덤 유저 에이전트를 커스텀하게 만들수도 있습니다. 마지막 세번째 웹소켓 명령은 아래와 같이 설정하세요.

    • 메소드 선택: PageNavigate
    • 파라메터: {"url":"https://google.com", "referer":"http://ngmsoftware.com"}

    JMvaEiu.png

     

     

    매크로를 실행하면 아웃풋 하단에 랜덤으로 만들어진 UserAgent가 표시됩니다.

    [웹소켓 명령:RandomUserAgent] 액션이 시작되었습니다.
    설명: RandomUserAgent, Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.355.0 Safari/533.3

     

     

    실제로 만들어진 Random User Agent가 적용되었는지 확인 해볼까요? 개발자 도구에서 구글 리퀘스트를 확인 해보세요. 위에 출력된 아웃풋과 동일합니다.

    SCjvfZv.png

     

     

    이번 예제에서는 다양한 것들을 같이 실행 해봤습니다. 페이지를 이동하는 방법과 페이지 이동 전 레퍼러를 설정하는 방법, 그리고 유저 에이전트를 랜덤하게 처리했습니다. 참고로, 레퍼러는 2가지로 처리해야 합니다. SetExtraHTTTPHeaders를 이용해서 헤더에 정의한 후 PageNavigate에서 재정의해야 정상 동작합니다.

    SetExtraHTTTPHeaders API

    Parameters

    • headers: map (HTTPS 헤더 정보 목록입니다.)
    {
      headers: ["Referer","http://ngmsoftware.com"],
               ["Accept-Language","ko-KR"]
               ...
    }

     

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.