Spaces:
Running
Running
Update app.py
Browse files
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 |
# ============================================================
|