๊ฐ๋ฐ๐ป/Python
[Python] self๋ ๋ฌด์์ผ๊นโ
๊ฐ์Dreamhack ์น ํดํน ๊ฐ์๋ฅผ ์๊ฐํ๋ ์ค Blind SQL Injection ๋ถ๋ถ์ ์ฝ๋๋ฅผ ๋ณด๊ณ ์ด๋๊น์ง ํ๋ ์ฝ๋ฉ๊ณผ๋ ๋ค๋ฅด๋ค๋ ๊ฒ์ ๋๊ปด ์ฝ๋ ๋ถ์์ ์ธ๋ถ์ ์ผ๋ก ์งํํ๊ณ Python์์ ์ฃผ๋ก ์ฌ์ฉํ๋ Class ์ self์ ๋ํด ํฌ์คํ ํ์๋ค. Python selfDreamhack ๊ฐ์ ์ค ์ ๊ณต๋ ์ฝ๋์์๋ ๋ค์๊ณผ ๊ฐ์ด ํด๋์ค๋ฅผ ์ ์ํ๊ณ self ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ฉํ ๊ฒ์ ๋ณผ ์ ์๋ค. ๋ํ, github์ ์กด์ฌํ๋ ์ฝ๋๋ค๋ง ๋ณด๋๋ผ๊ณ self๋ฅผ ํ์ฉํ๋ ๊ฒ์ ๋ง์ด ๋ณผ ์ ์๋ค.import requests import sys from urllib.parse import urljoin class Solver: """Solver for simple_SQLi challenge""" # initial..
[Python] ํ์ด์ฌ ๋ฆฌ์คํธ(List)
๋ฆฌ์คํธ(List)๋? ์ฌ๋ฌ ์๋ฃ๋ค์ ๋ชจ๋ชฉ๋ก ํํ๋ก ๊ด๋ฆฌํ๋ ์๋ฃ ๊ตฌ์กฐ๋ก ์ฌ์ฉ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ๋ค. #๊ฐ์ด ์๋ ๋ฆฌ์คํธ ์ ์ธ test_list = [] print(test_list) #๋ฆฌ์คํธ ์ด๊ธฐํ(int ํ) init_list = [1,2,3,4] print(init_list) #๋ฆฌ์คํธ ์ด๊ธฐํ(str ํ) str_list = ['1', '2', '3', '4'] print(str_list) [์ถ๋ ฅ ๊ฒฐ๊ณผ] [] [1, 2, 3, 4] ['1', '2', '3', '4'] ๋ฆฌ์คํธ + "์ฐ์ฐ์" ๋ฆฌ์คํธ + ๋ฆฌ์คํธ ์๋ฃํ์ด ๋ค๋ฅด๋๋ผ๋ "๋ฆฌ์คํธ + ๋ฆฌ์คํธ"๋ฅผ ํ ๊ฒฝ์ฐ ์ ์์ ์ผ๋ก ๊ฒฐํฉ๋์ด ์ถ๋ ฅ๋๋ค. #๋ฆฌ์คํธ ์ด๊ธฐํ(int ํ) init_list = [1,2,3,4] #๋ฆฌ์คํธ ์ด๊ธฐํ(str ํ) str_list = ..
![[Python] most likely due to a circular import ์ค๋ฅ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fc82yvb%2FbtrQVzxpCNV%2FAAAAAAAAAAAAAAAAAAAAAJeZyOYAlpect-162ffQa4MLUYsUTm_41JBrp9lXKS4l%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D9Laa6uWlUhI9Nmz5qU5PN5xc8To%253D)
[Python] most likely due to a circular import ์ค๋ฅ
Python ๋ชจ๋์ธ Argparse๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ฉํ๋ ์ค most likely due to a circular import ์๋ฌ๊ฐ ๋ฐ์ํ์๋ค. ํด๋น ์๋ฌ๋ ์์ ํด๋ ๋ด ๋ชจ๋๊ณผ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ํ์ผ์ด ์กด์ฌํ ์ ๋ฐ์ํ๋ ์๋ฌ์ด๋ค. ์ค์ ์์ ์๋ฌ ์ฌ์ง๊ณผ ๊ฐ์ด argparse.py๋ก ํ์ผ์ ์์ฑํ์๊ธฐ ๋๋ฌธ์ ํด๋น ์๋ฌ๊ฐ ๋ฐ์ํ์๋ค. (argparse๋ Python ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด์ ๋ ๋ชจ๋) Python ์ผ๋ก ์ฝ๋ฉ ์ ๋ชจ๋๊ณผ ๋์ผํ ์ด๋ฆ์ผ๋ก ํ์ผ ์ด๋ฆ์ ์ค์ ํ์ง ์๋ ๊ฒ์ด ์ค์ํ๋ฉฐ ๋ง์ฝ ๋ชจ๋๋ช ์ ์ฐ๊ณ ์ถ๋ค๋ฉด ๋ค์ ์ถ๊ฐ์ ์ธ ๋ฌธ์์ด์ ๋ฃ์ด์ argparse_1, argparse_test ์ ๊ฐ์ด ์ฌ์ฉํด์ผ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ค. ์ค๋ฅ, ์๋ชป๋ ์ ๋๋ ๊ถ๊ธํ ์ ์ด ์์ผ์๋ค๋ฉด ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์โ
![[Python] Argparse ๋ชจ๋ ์ฌ์ฉ๋ฒ ๋ฐ Cli ์ต์
](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbWxEXc%2FbtrQUCgOiDA%2FAAAAAAAAAAAAAAAAAAAAACcJSB3H3aKSEwH6CDVt0VGWh9NLDwwb3GPrCuTPPr6q%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DkTSb9YZALCv%252FP%252FpQuCuORyST3qM%253D)
[Python] Argparse ๋ชจ๋ ์ฌ์ฉ๋ฒ ๋ฐ Cli ์ต์
Argparse ๋ชจ๋ Argparse ๋ชจ๋์ Cli ๋ฅผ ํตํ์ฌ Python ์ฝ๋๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ ํน์ ์ต์ ์ ์ง์ ํ๊ณ ์ต์ ์ ๋ํ ๊ฐ์ ์ฝ๋ ๋ด ์ธ์๋ก ์ ๋ฌ๊ฐ๋ฅํ๋๋ก ํ๋ ๋ชจ๋์ด๋ค. https://docs.python.org/ko/3/library/argparse.html argparse — ๋ช ๋ นํ ์ต์ , ์ธ์์ ๋ถ์ ๋ช ๋ น์ ์ํ ํ์ — Python 3.11.0 ๋ฌธ์ argparse — ๋ช ๋ นํ ์ต์ , ์ธ์์ ๋ถ์ ๋ช ๋ น์ ์ํ ํ์ ์์ค ์ฝ๋: Lib/argparse.py The argparse module makes it easy to write user-friendly command-line interfaces. The program defines what arguments it requires, a..
[Crawling] ํฉ๋ฒ์ ์ธ Web Crawling ํ๋ ๋ฒ
์น ํฌ๋กค๋ง์ด๋? ์ฌ์ ์ ์ ์๋ ์น ํ์ด์ง๋ฅผ ๋ด ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ์ฌ์ฉํ์ฌ ๊ฒ์ํ๋ ํ์, ์น ์์ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ์๋์ ์ผ๋ก ํ์ํ๋ ํ์์ด๋ค. ํฌ๋กค๋ง์ ํ๋ ๊ฐ์ฅ ํํ ๋ฐฉ๋ฒ์ Python(Beautifulsoup, Selenium) ๋ฑ์ด ์กด์ฌํ๋ค. ๊ฐ์ธ์ ์ผ๋ก Selenium์ ์ฃผ๋ก ์ฌ์ฉํ๊ณ Selenium๊ณผ ๊ด๋ จ๋ ํฌ์คํ ์ ๋ค์๊ณผ ๊ฐ๋ค. 2022.09.09 - [๊ฐ๋ฐ๐ป/Python] - [Python] Selenium ์ฌ์ฉํ๊ธฐ [Python] Selenium ์ฌ์ฉํ๊ธฐ ์ Selenuim์ ์ฌ์ฉํ์ง?? ์ผ๋ฐ์ ์ผ๋ก ๋๋ฆฌ ์๋ ค์ง BeautifulSoup ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด๋ ์ฌ์ดํธ์ ๋ค์ํ ์ ๋ณด๋ฅผ ์ถ์ถํ ์ ์๋ค. ํ์ง๋ง...BeautifulSoup์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋์ ์ผ๋ก ์์ฑ๋ ์ ๋ณด๋ ๊ฐ bym..
![[Python] Shadow DOM ํฌ๋กค๋ง - Selenium](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbclVBl%2FbtrP3kPDIDK%2FAAAAAAAAAAAAAAAAAAAAAAxiZjFQv5Gf_IbvEfTQWGE0ZSE0tyaBm9o-MMDB_z6g%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DLLLWd8CCnRk9o%252Bp4BPauSiUP12A%253D)
[Python] Shadow DOM ํฌ๋กค๋ง - Selenium
Selenium No Such Element ์๋ฌ ์ต๊ทผ Selenium์ ์ฌ์ฉํ์ฌ ํฌ๋กค๋ฌ๋ฅผ ๊ตฌ์ถํ ์ผ์ด ์๊ฒจ ํ์์ ๊ฐ์ด Xpath, Selector ๋ฑ์ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ์ ์๋ํ์๋ค. ํ์ง๋ง, Selenium ์ฌ์ฉ ์ ๊ฐ์ฅ ํํ ์๋ฌ์ธ selenium.common.exceptions.NoSuchElementException: Message:no such element:Unable to locate element:{"method":"css selector", "selector':"์ค์ ์ฌ์ฉํ ๊ตฌ๋ฌธ" ์๋ฌ๊ฐ ๋ฐ์ํ์ฌ ๋ชจ๋ ๋ฐฉ๋ฒ์ ๋์ํด ์์ ํ์์ผ๋ ์ค๋ฅ๋ ํด๊ฒฐ๋์ง ์์๋ค. ํด๋น ์๋ฌ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์๋ ํด๋์ค ๋ช ์ ๊ณต๋ฐฑ์ด ์กด์ฌํ์ฌ ๊ณต๋ฐฑ ๋์ ์ ์ (.)์ ์ฌ์ฉํ์ฌ ํด๊ฒฐ, ๋ก๋ฉ ์๊ฐ์ผ๋ก ์ธํ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์..
[Python] ํ์ด์ฌ ์ฃผ์ ์ฒ๋ฆฌ ํ๋ ๋ฒ ๋ฐ ๋จ์ถํค(์ฃผ์ ์ฒ๋ฆฌ ์๋ ๋ ํด๊ฒฐ๋ฒ)
์ฃผ์์ด๋? ์ฃผ์์ ๋ฉ๋ชจ์ฅ๊ณผ ๊ฐ์ ๊ฐ๋ ์ด๋ค. ์ค์ ๋ก ์ฝ๋ ๋ฐํ์ ๋์ค ์คํ๋์ง ์์ผ๋ฉฐ ์ฃผ์ ์ฒ๋ฆฌ๋ ์ฝ๋๋ ์๋ ๊ฒ๊ณผ ๊ฐ์ ์ฝ๋๊ฐ ๋๋ค. ์ฃผ์ ๊ธฐ๋ฅ์ ํ์ด์ฌ์๋ง ์กด์ฌํ๋ ๊ฒ์ด ์๋๋ผ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋๋ถ๋ถ์ ์กด์ฌํ๋ฉฐ ์ฃผ๋ก ์ฝ๋ฉ ์ ์ฝ๋ ์ค๋ช ์ ์ฌ์ฉํ๊ฑฐ๋ ๋ฐฑ์ ์ฉ ์์ค์ฝ๋๋ฅผ ๋จ๊ฒจ๋ ๋ ์ฌ์ฉํ๋ค.(๊ฐ์ธ์ ์ธ ์ฌ์ฉ๋ฒ) ํ์ด์ฌ ์ฃผ์์ ์ข ๋ฅ 1. ํ์ค ์ฃผ์ # ํ ์คํธ ์ฝ๋ ์ถ๋ ฅ print("test") # ์ํ๋ ์ฝ๋ ์ฃผ์ ์ฒ๋ฆฌ #print("test") print("#์ ํ์ค๋ง ์ฃผ์ ์ฒ๋ฆฌ๋๋ ๊ฒ์ ์ ์ ์์") '#' ์ ์ ๋ ฅํ ๊ฒฝ์ฐ ์๋์ผ๋ก ์ฃผ์ ์ฒ๋ฆฌ๋๋ฉฐ ์ฃผ์ ์ฒ๋ฆฌ๋ฅผ ์ํ๋ ์ฝ๋๊ฐ ์กด์ฌํ ์ ํด๋น ์ฝ๋์ ์ปค์๋ฅผ ๋๊ณ #์ ๋๋ฅด๊ฒ ๋๋ฉด ํด๋น ์ฝ๋(ํ์ค)๋ฅผ ์ฃผ์ ์ฒ๋ฆฌํ ์ ์๋ค. 2. ์ฌ๋ฌ์ค ์ฃผ์ """ print("..
![[Python] ๊ฐ์ ํ๊ฒฝ ์ฌ์ฉํ๊ธฐ(venv)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FdKKlVN%2FbtrNOeQs6cX%2FAAAAAAAAAAAAAAAAAAAAAKTaKkAgrUYOWug_uWhdaYNk3GxXHR4XLcnoim5Gr3fd%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DUTpHGh2T62CtYDmghF9AFxJWCg4%253D)
[Python] ๊ฐ์ ํ๊ฒฝ ์ฌ์ฉํ๊ธฐ(venv)
๊ฐ์ ํ๊ฒฝ์ด๋? ๋จ์ด ๊ทธ๋๋ก ๊ฐ์์ผ๋ก ์์ฑํ๋ ํ๊ฒฝ์ด๋ค. ์ค์ ์ฌ๋ฌ๊ฐ์ง ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค ๋ณด๋ฉด ํจํค์ง(๋ผ์ด๋ธ๋ฌ๋ฆฌ)์ ๋ฒ์ ๋ฌธ์ ๋ก ์ธํด ์ ์์ ์ผ๋ก ์คํ๋์ง ์๋ ๊ฒฝํ๋ค์ ํ ๊ฒ์ด๋ค. ๋ง์ฝ ํน์ ํ๋ก๊ทธ๋จ์์ ์ด๋ค ํจํค์ง์ ์๊ตฌ ๋ฒ์ ์ด 1.7์ธ๋ฐ ํ์ฌ 1.8 ๋ฒ์ ์ ์ฌ์ฉ ์ค์ด๋ผ๋ฉด ๋ค์ด๊ทธ๋ ์ด๋ ํ ํ๋ก์ ํธ๊ฐ ๋๋๋ฉด ๋ค์ 1.8๋ก ์ ๊ทธ๋ ์ด๋๋ฅผ ํด์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ๋ฐ์ํ ๊ฒ์ด๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ๋ก์ ํธ ๋ณ๋ก ๋ ๋ฆฝ๋ ๊ฐ์ ํ๊ฒฝ์ ์ฌ์ ์ ๊ตฌ์ถํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ข์ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๊ฐ์ ํ๊ฒฝ ์์ฑ ์ด์ ๋ฒ์ ์ ํ์ด์ฌ์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๋์ ์ค์น ๊ณผ์ ์ด ํ์ํ๋ค. pip install virtualenv ํ์ง๋ง, ํ์ด์ฌ 3.3 ์ด์์ ๋ฒ์ ์ venv ๋ชจ๋์ด ์์ฒด์ ์ผ๋ก ๋ด์ฅ๋..