robots.txt 파일을 사용하여 페이지 차단 또는 삭제

http://support.google.com/webmasters/bin/answer.py?hl=ko&answer=156449

robots.txt 파일은 웹을 크롤링하는 검색엔진 로봇에 의한 사이트 액세스를 제한한다.
검색 로봇은 자동으로 작동하며 한 사이트의 페이지에 액세스하기 전에 특정 페이지에 대한 액세스를 차단하는 robots.txt 파일이 있는지 여부를 확인한다.


아래는 퍼온글
--------------------------------------------------------------------
Google에서 크롤링할 수 없도록 차단된 URL을 보려면 웹마스터 도구의 상태섹션에서 차단된 URL 페이지를 방문하시기 바랍니다.

robots.txt 파일은 검색엔진을 통해 색인을 생성하지 않으려는 콘텐츠가 사이트에 포함되어 있는 경우에만 필요합니다. 검색엔진이 사이트의 모든 콘텐츠에 대한 색인을 생성하도록 하려면 설령 빈 파일이라 할지라도 robots.txt 파일이 전혀 필요하지 않습니다.

robots.txt에 의해 차단된 페이지의 콘텐츠는 Google에서 크롤링하거나 색인을 생성하지 않지만, 웹의 다른 페이지에서 해당 페이지의 콘텐츠를 찾은 경우에는 여전히 URL의 색인을 생성할 수 있습니다. 따라서 페이지의 URL 및 사이트 링크의 앵커 텍스트나 오픈 디렉토리 프로젝트(Open Directory Project)의 제목(www.dmoz.org) 같은 기타 공개 정보가 Google 검색결과에 나타날 수 있습니다.

robots.txt 파일을 사용하려면 도메인의 루트 액세스 권한이 있어야 합니다. 권한이 있는지 확실하지 않으면 웹호스팅 업체에 문의하시기 바랍니다. 도메인의 루트에 대한 액세스 권한이 없는 경우에는 로봇 메타태그를 사용하여 액세스를 제한할 수 있습니다.

페이지가 다른 사이트에 연결되어 있더라도 페이지의 콘텐츠가 Google 웹 색인에 열거되지 않도록 완전히 차단하려면 noindex 메타 태그 또는 x-robots-tag를 사용합니다. Googlebot이 페이지를 가져오는 즉시, noindex 메타 태그를 보게 되고 해당 페이지가 웹 색인에 표시되지 않게 합니다. x-robots-tag HTTP 헤더는 그래픽이나 다른 종류의 문서와 같이 HTML이 아닌 파일의 색인 생성을 제한하고 싶을 때 특히 유용합니다.


'Programming > Web' 카테고리의 다른 글

Bootstrap 사용하기(부트스트랩)  (0) 2018.01.03
크롤링이란? -> 보강설명 필요  (0) 2017.07.04
  1. 정의
  • Web Scraping이 본래 쓰이던 것이다.
  • 컴퓨터 소프트웨어 기술 중 하나로 웹 사이트 중에서 원하는 정보를 추출하는 것


일단 추가할거 추가해야함..

'Programming > Web' 카테고리의 다른 글

Bootstrap 사용하기(부트스트랩)  (0) 2018.01.03
Robots.txt ?  (0) 2017.07.04
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<arpa/inet.h> // AF_INET 외부 네트워크 도메인
#include<sys/types.h>
#include<sys/socket.h>
#define MAXLINE 511
int main(int argc, char *argv[]) {
       int cli_sock;
       struct sockaddr_in serv_addr;
       int datalen;
       pid_t pid;
       char buf[MAXLINE + 1];
       int nbytes;
       if (argc != 3) {     //사용법 숙지
              printf("Usage : %s <IP> <Port> \n", argv[0]);
              exit(0);
       }
       cli_sock = socket(PF_INET, SOCK_STREAM, 0); //cli_sock을 소켓 파일 서술자로 만듭니다.
       if (cli_sock == -1) {
              perror("socket() error\n");
              exit(0);
       }
       memset(&serv_addr, 0, sizeof(serv_addr));
       serv_addr.sin_family = AF_INET;
       serv_addr.sin_addr.s_addr = inet_addr(argv[1]); //ip와
       serv_addr.sin_port = htons(atoi(argv[2])); //port의 입력
       if (connect(cli_sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) == -1) { //서버에게 접근 시도
              perror("connect() error\n");
              exit(0);
       }
       if ((pid = fork()) == 1) { //다중 프로세스를 위한 fork함수. 자식 프로세스 생성
              perror("fork() error\n");
              exit(0);
       }
       else if (pid == 0) { //자식 프로세스 부분. stdin로 사용자가 입력한 문자를 buf에 저장하여 소켓에다
              while (1) {        //write 시스템콜을 이용해 server에게 문자를 보낸다. exit 입력시 종료
                     fgets(buf, sizeof(buf), stdin);
                     nbytes = strlen(buf);
                     write(cli_sock, buf, MAXLINE);
                     if ((strncmp, "exit", 4) == 0) {
                           puts("Good Bye.");
                           exit(0);
                     }
              }
              exit(0);
       }
       else if (pid>0) { //부모프로세스. server가 보낸 문자열을 받아 출력한다.
              while (1) {    //역시 exit 를 받을시 종료
                     if (nbytes = read(cli_sock, buf, MAXLINE) <0) {
                           perror("read() error\n");
                           exit(0);
                     }
                     printf("%s", buf);
                     if (strncmp(buf, "exit", 4) == 0)
                           exit(0);
              }
       }
       close(cli_sock);
       return 0;

}



#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<arpa/inet.h> //AF_INET 외부 내트워크 도메인
#include<sys/types.h>
#include<sys/socket.h>
#define MAXLINE 511
int main(int argc, char* argv[]) {
       int serv_sock;
       int conn_sock;
       struct sockaddr_in serv_addr;
       struct sockaddr_in conn_addr;
       int addrlen, datalen;
       char buf[MAXLINE + 1];
       int nbytes;
       pid_t pid;
       if (argc != 2) { //사용법 숙지
              printf("Usage : %s <port>\n", argv[0]);
              exit(0);
       }
       serv_sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); // serv_sock를 소켓 파일 서술자로 만든다.
       if (serv_sock == -1) {
              perror("socket() error\n");
              exit(0);
       }
       memset(&serv_addr, 0, sizeof(serv_addr));
       serv_addr.sin_family = AF_INET;
       serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
       serv_addr.sin_port = htons(atoi(argv[1]));
       if (bind(serv_sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) == -1) {
              perror("bind() error\n"); //bind(). 소켓 파일 서술자에게 ip, port 주소를 가진 구조체를 넣어준다.
              exit(0);
       }
       if (listen(serv_sock, 1) == -1) { // 소켓 대기열 생성
              perror("listen() error\n");
              exit(0);
       }
       addrlen = sizeof(conn_sock);
       conn_sock = accept(serv_sock, (struct sockaddr*)&conn_addr, &addrlen); //전화오기를 기다림.
       if (conn_sock == -1) {
              perror("accept() error\n");
              exit(0);
       }
       if ((pid = fork()) == -1) { close(conn_sock); perror("fork() error"); exit(0); }
       else if (pid == 0) { //자식프로세스이다.
              while (1) {
                     fgets(buf, sizeof(buf), stdin);
                     nbytes = strlen(buf);
                     write(conn_sock, buf, MAXLINE);
                     if ((strncmp, "exit", 4) == 0) {
                           puts("Good Bye.");
                           exit(0);
                     } //자식프로세스는 stdin으로 사용자가 입력한 문자를 buf에 저장하여 소켓에다 write 시스템콜을 이용해
              }     //client에게 문자열을 보내고, exit를 입력시 종료하게 한다.
              exit(0);
       }
       else if (pid>0) { //부모프로세스이다.
              while (1) {
                     if ((nbytes = read(conn_sock, buf, MAXLINE)) <0) {
                           perror("read() error\n");
                           exit(0);
                     }
                     printf("%s", buf);
                     if (strncmp(buf, "exit", 4) == 0)
                           exit(0);
              } //부모프로세스는 client가 소켓에 보낸 문자열을 read로 읽어 저장한다.
       }     //역시 exit 가 날라왔을시에는 종료.
       return 0;

}


우선 KISA에서 배포하는 SHA소스코드이다.


KISA_SHA256.zip

(재배포 문제가 제기 될 시 삭제될 수 있음)


여튼 이 소스를 활용해서


SHA256 암호화하는 소스코드를 짜보았다.



처음에 KSA에서 라이브러리 소스만 주고 어떻게 메인함수를 짜야 할지 몰라 쩔쩔맷는데


의외로 쉽게 코드를 습득해서 만들수 있었다.


자료형..에 대해서 좀 많이 공부해봐야할듯.

'Programming > 문자열 인코딩,디코딩' 카테고리의 다른 글

문자 인코딩의 의미  (0) 2017.02.09

+ Recent posts