본문 바로가기

Programming/Python Program

[PYTHON] Python을 이용한 웹사이트 스캐너 만들기 - 3. IP Address


2편에서 tld(Top Level Domain)을 얻었습니다.

이제는 스캐닝을 할 웹사이트의 ip address 를 얻을 필요가 있습니다.



위와 같이 티스토리의 아이피는 180.70.93.117 이네요. 그렇지만 우리가 원하는 정보는 이 IPv4에 해당하는 숫자만 필요합니다. 즉, 프로그램적으로 앞부분의 'history.com has address ' 이 부분을 날려버리면 됩니다. 혹은 뒷 부부만 선택적으로 받아들이게 하면 됩니다.

1. 아이피를 얻기위해 위와같이 파일을 만들어 줍니다.

2. 위의 터미널에서 보여진대로 특정 정보만 취사선택 하기위해 이번에도 os 를 임포트 해줍니다.

3. 아이피 정보를 얻기 위한 함수를 선언.

4. 위의 터미널에서의 명령을 파이썬으로 프로그램적으로 구동 시키기 위한 방법으로 'host ' 명령어 뒤에 url을 붙여 command 명령어 변수에 넣어 줍니다. 여기서 주의할 점은 'host ' 뒤에 빈 공백(space)가 있습니다.

5. 위의 명령을 실행하고 실행값을 리턴 받기 위해 위와 같이 os.popen(command) 를 process 에 할당해 줍니다. 여기서 process 에는 위의 터미널 창에서 'tistory.com has address 180.70.93.117' 이 부분이 모두 들어가게 됩니다. 우리는 IP address 만 필요하므로 아래와 같이 처리를 해줍니다.

6. 위의 process 를 읽어들인후 string 으로 컨버팅 해주고 그 값을 result 에 넣어줍니다.

7. 'tistory.com has address 180.70.93.117' 에서 'has address ' 이 부분은 어느 사이트든지 들어가는 부분입니다. 즉 이 부분을 마커로 지정한 후 이 이후 부분만 선택적으로 저장하려고 합니다. 그래서 'has address' 를 result 에서 찾으면 마커(커서)는 'has' 의 'h'에 놓이게 됩니다. 여기에서 공백포함하여 12번 마커를 이동시키면 아이피 주소의 첫번째 숫자에 놓이게 됩니다. 

8. 이제 결과를 리턴 해줄 차례입니다. 여기에서는 위에서 지정한 마커를 활용하면 됩니다. market: 이 부분은 마커가 위치한 그 이후를 의미하므로 result에서 마커 이후의 값이라는 말이 됩니다. 즉, IP 를 얻을 수 있게 된 것이죠. 그런데 뒷부분의 splitlines()[0]은 뭐냐?

이는 웹사이트가 여러개의 서버를 사용할 경우가 있는데 그 중에 최상단의 단 하나만 취하겠다는 의미입니다. 가령 아래와 같이 구글은 상당히 많은 서버를 운영하고 있는데 그중에서 첫번째 서버의 아이피만 결과로 리턴하겠다는 의미입니다.

9. 그럼 여기까지를 확인하는 차원에서 프린트를 이용해서 확인해 보겠습니다.

10. 위와 같이 아이피 주소를 잘 찾았습니다. 역시 여기까지 확인하셨다면 프린트는 삭제하시면 됩니다.

다음편에 계속. To be continued...