[Flow.Txt] 파이썬 데이터 크롤링 원데이 클래스 수강(2020.05.21)[Flow.Txt] 파이썬 데이터 크롤링 원데이 클래스 수강(2020.05.21)

Posted at 2020. 5. 21. 16:58 | Posted in Flow.Txt
반응형





웹 크롤링을 통한 데이터 수집 및 통계화는 일정수준 이상 올랐다고 생각하지만...



 ① 뭐랄까 혼자 독학으로 익힌 크롤링 내가 하는 방향과 다른 사람들이 쓰는 방향이 어떤지?


 ② ( 나는 Node.js를 쓰는데 ) 파이썬과 판다스를 바탕으로 크롤링과 데이터 분석이 요즘 왜 각광받고 있는지?


 ③ 이런 데이터 크롤링 강습은 어떻게 진행을 하는지?


 ④ 주로 이런 강습을 어떤 분들이 찾아와 들으시는지?



대충 이정도 이유가 궁금해서 탈잉 원데이 클래스로 이루어지는 파이썬 크롤링 수업을 듣고왔다.










퇴근을하고 간단히 저녁을 먹은뒤


강습이 이루어지는 스터디 공간을 찾아가고.


강의에 앞서 강사님이 간단히 자기소개를 하시는데...


프로그래머가 아니라 자신을 마케터라고 이야기 하셨다.


잉???


난 당연히 프로그래머 일거라 생각했는데...










그치만 강의를 진행하고 단지, 마케팅일을 하는것 뿐 프로그램에 대해 설명하는건 분명 크롤링을 개발하는 사람이구나 라는 생각이 들더라...









강의내용은 솔직히말해 내가 들을 수준은 아니였지만


강의를 듣는 분들을 보며 새삼 생각에 잠길 수 밖에 없었다.


강사님이야 그렇다 쳐도, 강습에 개발자는 나 하나 뿐이었고.


다들 마케터셨던건...

( 우리회사 마케터 분들 뭐하고 계시나요??? )


솔직히 말해 강의 자체는 어떻게 따라간다고 해도.


정규표현식같은걸 사용해야 하는 난관을 극복할 수 있을까??




이 강습을 듣고 실무에 적용할 수 있나? 라는 부분에서, 한계는 명확하기에...


나보다 어리다고 생각되는 분은 한분정도 뿐이고, 다른분들은 적어도 나보다 5 ~ 10 연배로 보이시는 분들...


그것도 개발쪽 파트가 아니신 분들이 최소한의 프로그래밍에 도전하신다는것에...


뭔가 생각에 잠기게 된다.






그외 강의를 듣고 느끼는것


파이썬 + 판다스 ( 되었다 난이미 Node.js에 고여가고 있다... 파이썬은 또 이렇게 좀 나중으로 ) 

② 구글 코랩 → 앞으로 글을 쓴다는것은 MarkDown 방식에 반드시 익숙해 져야 한다.

③ 내 주변 마케터들은 뭐하고 있는가... 아니 제발 국어공부라도 좀 해줘... ㅠ.ㅠ







반응형
//

[Node.js] HTTPS 서버 구현하기[Node.js] HTTPS 서버 구현하기

Posted at 2020. 5. 20. 18:22 | Posted in Node.js
반응형




※ 해당 포스팅은 AWS EC2 서버에서 node.js v14.3.0 버전으로 테스트한 내용입니다.




참고 : https://nodejs.org/api/https.html

참고 : https://mylko72.gitbooks.io/node-js/content/chapter7/chapter7_5.html

참고 : https://lahuman.github.io/cet_key_to_pem







node.jssocket.io를 이용한 통신을 해야하는 경우가 생겼다.


문제는 https 서버에서 socket통신을 이용하는 경우 "혼합된 컨텐츠 차단", "크로스 도메인 이슈" 에러가 발생하여


해결을 위해 이 경우 HTTPS 서버를 구현하여 해결하였다.






■ HTTPS란?




하이퍼텍스트 전송 프로토콜 보안( HTTPS, Hypertext Transfer Protocol Secure )은 HTTPS 클라이언트와 서버간에 안전한 통신을 제공하는 통신 프로토콜이다.


HTTPS는 보안 기능을 확보하기 위해 전송층 보안TLSTransport Layer Security ) / 보안 소켓층( SSL, Secure Sockets Layer ) 프로토콜 위해 HTTP를 구현한 것이다.




HTTPS는 두 가지 방식으로 보안 기능을 제공한다.


첫번째로 단기간에 사용되는 세션 키 교환을 위해 장기간 사용되는 공개 키와 비밀 키를 사용해 클라이언트와 서버간 데이터 암호화를 진행한다.


또한 인증 기능을 통해 접속하련느 웹 서버가 의도한 서버가 맞는지 확인해 중간자 공격을 방지할 수 있다.








■ HTTPS 서버와 HTTPS 클라이언트를 구현





#01. https 모듈 설치



먼저 https 모듈을 설치해야 한다.


 $ npm install https





#02. crt, key 파일을 pem 파일로 변환하기



※ 해당 cert, key 파일은 AWS EC2에서 제공되는 cert, key 파일을 사용하였다.

    ( 참고 :  )



HTTPS 인증서를 node.js에서 바로 사용하기 위해서는 pem 파일 형식으로 변환하는 작업이 꼭 필요하기에


아래와 같이 작업을 진행해 보도록 하자.




01) KEY 파일 변경하기

 $ openssl rsa -in  custom.key -text > agent-key.pem



02) CRT 파일 변경

 $ openssl x509 -inform PEM -in custom.crt > agent-cert.pem 




#03. HTTPS 서버 실행



# 소스코드

 https.server.app.js

const https = require( "https" );

const fs = require( "fs" );


// HTTPS 클라이언트 생성

const options = {

      hostname : "wickedmiso.com"

    , port : 443                                                                              

    , path : "/"

    , method : "GET"

    , key : fs.readFileSync( "/etc/pki/tls/private/agent-key.pem", "utf8" )

    , cert : fs.readFileSync( "/etc/pki/tls/certs/agent-cert.pem", "utf8" )

    , agent : true

};


options.agent = new https.Agent( options );


// HTTPS 서버 생성

https.createServeroptions, ( req, res ) => {

    res.writeHead( 200 );

    res.end( "HTTPS, Hypertext Transfer Protocol Secure\n" );

}).listen( 52273, function() {

    console.log( "Server Running at https://localhost:52273" );

});






// 도메인 주소

// https 기본 포트 443



// key 옵션은 SSL을 위한 개인키를 지정한다.

// cert값은 사용할 x509 공개키를 지정한다.

// 크로스 브라우저 처리를 위한 userAgent 프로퍼티



// 맞춤형 Agent 객체를 생성한다.

// agent : false인경우 주석처리하여 비활성화 한다.










# 출력결과






반응형
//

[Flow.Txt] 블로그 조회수가 반토막이 나버렸다.(2020.05.18)[Flow.Txt] 블로그 조회수가 반토막이 나버렸다.(2020.05.18)

Posted at 2020. 5. 19. 01:14 | Posted in Flow.Txt
반응형





일평균 2,000대를 찍던 블로그의 조회수가 폭락했다.


지난 석가탄신일부터 어린이날 까지의 연휴기간에 조회수가 반토막이 나버렸다.


주말이면 500좀 넘는 만큼 줄어드는 블로그니까.


당연히 연휴기간이 끝나면 다시 원상 복구를 하겠지 라고 생각했다.


하지만 현실은...









연휴기간이 끝나고, 영 회복을 못하고 있다...


무슨일일려나?


간간히 블로그를 통해 아르바이트라는 부수익은 그렇다 쳐도...


이제 3,000을 준비하며 좀 체계화된 강습 컨텐츠를 준비하고 있었는데... 쯥...









내 블로그는 개발과 컴퓨터 설정을 정리해두는 블로그다.


당연히 업무가 많은 평일 일과시과 오후 저녘( 개발자들은 저녘에 일하니까... )의 유입률이 가장 높다.


막연하게 블로그를 기반으로( 가끔 떨어지는 알바받는거말고. )


이것저것 시작해 봐야지라는 막연한 생각이 조금 씩 끝나가고 시작하려는 때에...


기운이 빠지는 건 아니지만 좀 씁쓸 하네...





블로그 조회수가 반토막난게 꼭 코로나19가 아니라.


그냥 구글의 검색조건이 뭔가 변했고 거기서 내 블로그가 검열( ? )되었을 가능성도 크다고 생각하지만.


인생의 다음 막으로 넘어가기 위한 준비 시작하고 있다.








반응형
//

AWS SSLAWS SSL

Posted at 2020. 5. 15. 12:01 | Posted in 카테고리 없음
반응형

참고 : https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/SSL-on-amazon-linux-2.html

참고 : https://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/workingsecurity-ssl.html

참고 : https://www.comodossl.co.kr/certificate/ssl-installation-guides/Apache-csr-crt.aspx









CA가 서명한 인증서 가져오기



$ cd /etc/pki/tls/private/

$ sudo openssl genrsa -out custom.key



----------------------------------------------------------------------------

$ sudo openssl genrsa -out /etc/pki/tls/private/custom.key

----------------------------------------------------------------------------




$ sudo chown root:root custom.key

$ sudo chmod 600 custom.key

$ ls -al custom.key




원하는 키를 사용하여 CSR을 생성한다. 다음예에는 위에서 생성한 custom.key가 사용된다.


$ sudo openssl req -new -key custom.key -out csr.pem



이름

설명


 

해당 국가의 두 자리 ISO 약자 ( 국가코드 ).

KR(=대한민국)

 

위치한 지역의 이름
약어로 사용할 수 없음.

Seoul

 

위치한 지역의 시 / 군 / 구

Gangnam-gu

 

해당 조직의 이름, 부서명 ( 약칭 사용 금지 )

Developer Team

 

해당 조직에 대한 추가정보 ( 선택사항 )

 

 

서비스 도메인명

이 값은 사용자가 브라우저에 입력해야 하는 웹 주소와 정확히 일치해야 한다.

일반적으로 이는 www.example.com의 형식으로, 호스트 이름 또는 별칭이 앞에 붙는 도메인 이름을 뜻한다.

자체 서명된 인증서로 DNS 확인 없이 테스트 하는 경우, 일반 이름은 호스트 이름만으로 구성될 수 있다.

CA는 *.example.com과 같이 와일드 카드 이름을 허용하는 인증서도 제공한다.



 

서버관리자의 이메일 주소

 
 

패스워드 ( 선택사항 )

 
 

이메일 ( 선택사항 )

 






Step04. 인증기관에 CSR 제출


프로덕션용으로 CSR을 인증 기관( CA )에 제출하여 서버 인증서를 얻으려면 다른 자격 증명이나 ID 증명이 필요할 수 있다.


신청이 성공하면 CA에서 디지털 서명된 자격 증명 인증서와 가능한 경우 체인 인증서 파일을 보내준다.


이용 가능한 일부 CA 목록을 보려면 Wikipedia에서 인증기관 공급자를 참고한다.




테스트 용도로만 사용할 수 있는 자체 서명된 인증서를 하나 생성해 보자.


다음 명령줄을 사용하여 자체 서명된 인증서를 생성한다.


 $ sudo openssl x509 -req -days 365 -in csr.pem -signkey custom.key -out custom.crt

[ec2-user@ip-172-31-20-171 /]$ sudo openssl x509 -req -days 365 -in csr.pem -signkey custom.key -out custom.crt

Signature ok

subject=/C=KR/ST=Seoul/L=Gangnam/O=wickedmiso/OU=wickedmiso/CN=*.wickedmiso.com/emailAddress=saak@wickedmiso.com

Getting Private key

[ec2-user@ip-172-31-20-171 /]$ ls -al

total 28

dr-xr-xr-x  18 root root  308 May 20 17:16 .

dr-xr-xr-x  18 root root  308 May 20 17:16 ..

-rw-r--r--   1 root root    0 Jul  5  2019 .autorelabel

lrwxrwxrwx   1 root root    7 Jun 19  2019 bin -> usr/bin

dr-xr-xr-x   4 root root 4096 May 15 10:47 boot

-rw-r--r--   1 root root 1151 May 20 16:37 csr.pem

-rw-r--r--   1 root root 1338 May 20 17:16 custom.crt

-rw-------   1 root root 1675 May 20 16:34 custom.key

drwxr-xr-x  15 root root 2820 May 15 22:35 dev

drwxr-xr-x  95 root root 8192 May 17 17:55 etc

drwxr-xr-x   3 root root   22 Oct  4  2019 home

lrwxrwxrwx   1 root root    7 Jun 19  2019 lib -> usr/lib

lrwxrwxrwx   1 root root    9 Jun 19  2019 lib64 -> usr/lib64

drwxr-xr-x   2 root root    6 Jun 19  2019 local

drwxr-xr-x   2 root root    6 Apr 10  2019 media

drwxr-xr-x   2 root root    6 Apr 10  2019 mnt

drwxr-xr-x   5 root root   41 Oct  5  2019 opt

dr-xr-xr-x 106 root root    0 May 15 22:35 proc

dr-xr-x---   4 root root  167 May 20 16:56 root

drwxr-xr-x  31 root root 1040 May 20 04:25 run

lrwxrwxrwx   1 root root    8 Jun 19  2019 sbin -> usr/sbin

drwxr-xr-x   2 root root    6 Apr 10  2019 srv

dr-xr-xr-x  13 root root    0 May 19 23:06 sys

drwxrwxrwt  10 root root  330 May 20 16:34 tmp

drwxr-xr-x  13 root root  155 Jun 19  2019 usr

drwxr-xr-x  20 root root  280 Jul 22  2019 var




CA는 다양한 목적을 위해 마련된 여러 형식의 파일을 보낼 수 있다.


AWS 자습서에서의 설명은 PEM 형식의 인증서 파일만 사용해야 하는데,


이는 보통 .pem 또는 .crt 파일 확장명으로 표시되지만 항상 그런것은 아니다.


어떤 파일을 사용할지 확실하지 않은 경우 텍스트 편집기로 파일을 열고


---- BEGIN CERTIFICATE ----


  ~~~~~~~ 인증서 암호화 TEXT ~~~~~~~


 ---- END CERTIFICATE ----


위와 같은 형태로 시작하고 끝나는지 확인해 보자.


또한 아래와 같이 파을 실행함으로서 테스트 해볼 수 도 있다.






반응형
//