Wanderhalleylee commited on
Commit
64ea744
·
verified ·
1 Parent(s): 64d43e6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +91 -0
app.py CHANGED
@@ -600,6 +600,97 @@ async def refresh_page(request: SessionRequest, auth=Depends(verify_token)):
600
  raise HTTPException(status_code=500, detail=str(e))
601
 
602
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
603
  # ============================================================
604
  # ROTAS DE BUSCA NO SITE
605
  # ============================================================
 
600
  raise HTTPException(status_code=500, detail=str(e))
601
 
602
 
603
+ # ===================== SCROLL PAGE =====================
604
+ @app.post("/scroll")
605
+ async def scroll_page(request: dict, token: str = Depends(verify_token)):
606
+ """Scroll the page up or down"""
607
+ try:
608
+ session_id = request.get("session_id")
609
+ direction = request.get("direction", "down") # "up" or "down"
610
+ amount = request.get("amount", 400) # pixels
611
+
612
+ if not session_id:
613
+ raise HTTPException(status_code=400, detail="session_id é obrigatório")
614
+
615
+ session = session_manager.get_session(session_id)
616
+ if not session:
617
+ raise HTTPException(status_code=404, detail="Sessão não encontrada")
618
+
619
+ driver = session["driver"]
620
+
621
+ if direction == "up":
622
+ driver.execute_script(f"window.scrollBy(0, -{amount});")
623
+ else:
624
+ driver.execute_script(f"window.scrollBy(0, {amount});")
625
+
626
+ import time
627
+ time.sleep(0.5)
628
+
629
+ # Get current scroll position
630
+ scroll_info = driver.execute_script("""
631
+ return {
632
+ scrollTop: window.pageYOffset || document.documentElement.scrollTop,
633
+ scrollHeight: document.documentElement.scrollHeight,
634
+ clientHeight: document.documentElement.clientHeight
635
+ };
636
+ """)
637
+
638
+ # Take screenshot
639
+ screenshot = driver.get_screenshot_as_base64()
640
+
641
+ return JSONResponse(content={
642
+ "status": "success",
643
+ "direction": direction,
644
+ "amount": amount,
645
+ "scroll_info": scroll_info,
646
+ "screenshot": screenshot,
647
+ "url": driver.current_url,
648
+ "title": driver.title
649
+ })
650
+
651
+ except HTTPException:
652
+ raise
653
+ except Exception as e:
654
+ logger.error(f"Erro no scroll: {e}")
655
+ raise HTTPException(status_code=500, detail=str(e))
656
+
657
+
658
+ # ===================== GET SELENIUM COOKIES =====================
659
+ @app.post("/get-selenium-cookies")
660
+ async def get_selenium_cookies(request: dict, token: str = Depends(verify_token)):
661
+ """Get all cookies from the Selenium browser session (including httpOnly)"""
662
+ try:
663
+ session_id = request.get("session_id")
664
+
665
+ if not session_id:
666
+ raise HTTPException(status_code=400, detail="session_id é obrigatório")
667
+
668
+ session = session_manager.get_session(session_id)
669
+ if not session:
670
+ raise HTTPException(status_code=404, detail="Sessão não encontrada")
671
+
672
+ driver = session["driver"]
673
+
674
+ # Get all cookies from Selenium (includes httpOnly)
675
+ cookies = driver.get_cookies()
676
+
677
+ logger.info(f"Cookies obtidos do Selenium: {len(cookies)} cookies")
678
+
679
+ return JSONResponse(content={
680
+ "status": "success",
681
+ "cookies": cookies,
682
+ "total": len(cookies),
683
+ "url": driver.current_url,
684
+ "domain": driver.current_url.split("//")[-1].split("/")[0] if driver.current_url else ""
685
+ })
686
+
687
+ except HTTPException:
688
+ raise
689
+ except Exception as e:
690
+ logger.error(f"Erro ao obter cookies: {e}")
691
+ raise HTTPException(status_code=500, detail=str(e))
692
+
693
+
694
  # ============================================================
695
  # ROTAS DE BUSCA NO SITE
696
  # ============================================================