본문 바로가기

개발

[Proxy] Proxy 종류 proxy에는 forward proxy, reverse proxy가 있습니다. 1) forward proxy 서비스에 직접 요청하지 않고, proxy를 거쳐 요청하는 형태입니다. 'client -> proxy -> internet -> service' 플로우이며, service는 client가 누군지 알수 없습니다. (proxy로부터 요청을 받는것으로 인지합니다) 2) reverse proxy 서비스가 직접 응답을 주지 않고, proxy를 거쳐 응답을 줍니다. 'client -> internet -> proxy -> service'플로우이며, client는 service 실제에 접근할 수 없습니다. 더보기
[Selenium] 엘리먼트 속성 가져오기 셀레니움 사용시 가져온 element의 속성을 알고 싶을때가 있습니다. 대표적으로 "disabled"가 있는데요. 아래 코드는 target element의 "disabled" 속성 여부를 확인합니다. element.get_attribute("disabled") # if disabled true # if none disabled None 이상입니다 더보기
[Selenium] NoSuchElementException selenium에서 element를 가져올때, 종종 잘못된 경로로 인해 가져오지 못할때가 있습니다. 이때, NoSuchElementException을 사용해주면 좋습니다. from selenium.common.exceptions import NoSuchElementException ```` try: `````` except NoSuchElementException: `````` 위 코드로 try 하위에서 발생한 element undefined 에러는 대응이 가능합니다. 더보기
[Selenium] unknown error: Chrome failed to start: exited abnormally linux 환경에서 chrome driver 사용시 발생할 수 있는 에러입니다. path, version 모두 맞췄으면 아래 options을 추가만 해주시면 됩니다. chrome_options = webdriver.ChromeOptions() chrome_options.add_argument("--headless") # linux 환경에서 필요한 option chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage') 끝! 더보기
[Selenium] DeprecationWarning: executable_path has been deprecated, please pass in a Service object python으로 selenium 사용시 위와같은 에러가 뜰수 있습니다. warning이어서 무시할수 있는데, 나중을 생각하면 처리하는게 있죠. 방법은 두가지입니다. 1. chromedriver path 설정 방법 변경 # 변경 전 driver = webdriver.Chrome(executable_path='/Users/nojeong-u/Desktop/selenium/chromedriver', options=chrome_options) # 변경 후 driver = webdriver.Chrome(service=Service('/Users/nojeong-u/Desktop/selenium/chromedriver'), options=chrome_options) 2. ChromeDriverManager 사용 fro.. 더보기
JWT token expire하는 법 jwt token은 stateless합니다. 그리고 토큰 탈취 우려가 있지요. token 기반 인증시 로그아웃등 토큰을 못쓰게 해야할때 어떻게 할까요? exp을 앞당기거나 token을 무력화 시키면 될까요? 정답은 안됩니다. exp을 연장하는건 가능해도 이전에 발급한 토큰의 유효성을 수정할수는 없습니다. 만약 토큰이 갈취되면 갈취된 토큰은 유효합니다. 그래서 두가지 방식을 제안드립니다. 1) 토큰의 만료 기간을 짧게 한다. 2) payload에 로그인한 ip를 담아, 로그인한 ip가 아니면 block한다. 위 방법들은 임시방편일 뿐입니다. 더 견고한 보안을 위해서면 아예 세션으로 auth로직을 구현해야할듯 합니다. 감사합니다. 더보기
cra에서 proxy 사용하기 proxy서버는 보안 or 편리를 위해 사용됩니다. cra에서는 개발자 모드일때, api 서버의 cors이슈를 해결하기위해 사용하는데요. 적용 방법은 package.json에 proxy: "back url"형식으로 기입하시면 됩니다. 감사합니다 더보기
EACCES: permission denied, unlink '/usr/local/bin/code' 컴퓨터: mac(m1) 상황: code . 사용을 위해 path 설치 에러 코드: EACCES: permission denied, unlink '/usr/local/bin/code' 해결방법: #bin 폴더에 들어가 code를 삭제합니다 cd /usr/local/bin sudo rm -rf code #삭제 완료후 vscode에서 path 설치를 재시도합니다 이상입니다 더보기