#Dev_8 출석 자동화
현재 구동중인 서버 proxmox에 컨테이너?를 한개더 만들어서 오전9시에 동작되게 crontab -e에 등록.
핵심은
import asyncio
from playwright.async_api import async_playwright
from playwright_stealth import Stealth
from datetime import datetime
stealth = Stealth()
async def main():
async with async_playwright() as p:
# 브라우저 실행
browser = await p.chromium.launch(headless=False)
context = await browser.new_context()
page = await context.new_page()
# 봇 감지 방지 적용
await stealth.apply_stealth_async(page)
#여기에 원하는걸 구현하면 된다.
print("=== 모든 자동화 작업 종료 ===")
await browser.close()
if __name__ == "__main__":
print(datetime.now())
asyncio.run(main())
이거였다.
이렇게 하면 내가 이용하는 사이트 봇도 우회되면서 컨테이너에서 동작도되었다. heladless는 Flase로 두어야함.
컨테이너에는 디스플레이가없어 동작이 안되기 때문에 가상 디스플레이를 생성하여 동작시키면 움직인다
xvfb-run --server-args="-screen 0 1920x1080x24" python3 main.py >> /root/routine/log.txt 2>&1
이런식으로 main.py를 실행하면 로그도 남고 동작도 된다. 지금 해놓은건 커뮤니티 사이트를 돌아 네이버링크 수집후 방문하여 포인트 적립을 구현해두었다. 이외 커뮤니티 출석체크도 구현해둠.
추가로 텔레그램api까지 연동하면 시작, 로그, 완료 될때 메시지도 보낼수 있음.
현재 텔레그램이 메시지 fee를 받아서 유로인듯 보이지만…
좀더 테스트 해보니 async_playwright로 파일도 가로채고, 주고받은 파일도 볼 수 있어서 크롤링에 좋은듯… 기존엔 chromedriver를 썻느데 전부 playwright로 교체함.
ps. 저의 컨테이너는 UTC로 동작되고 있어. KST에 맞추려면 -9를 해야했습니다. 시간 변경이 귀찮아서…