File size: 1,818 Bytes
3b2ecd2
494cdcf
973d2bc
 
ca11d6d
baf3cbb
02fa17e
e37298f
973d2bc
e37298f
973d2bc
 
65230b0
 
 
 
8996078
02fa17e
 
 
65230b0
 
 
 
02fa17e
 
 
8996078
 
 
 
87ec1a0
65230b0
 
 
 
 
 
 
 
 
 
 
 
8996078
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e37298f
973d2bc
 
 
e37298f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
from seleniumwire import webdriver
from selenium.webdriver.chrome.options import Options
from fastapi import FastAPI, Request
import uvicorn
import time
import json
from urllib.parse import unquote

app = FastAPI()

@app.get("/")
def main():
    return {"code": 200,"msg":"Success"}
    
@app.get("/chrome")
def chrome(url:str=None,wait:int=5,header:str=None):
    
    target_url = unquote(url)
    wait_time = unquote(wait)
    header_list = unquote(header)

    if target_url == None:
        return {"code": 500,"msg":"No target URL"}

    if wait_time not in range(0, 31):
        return {"code": 500,"msg":"The waiting time must be between 0 and 30"}

    options = Options()
    options.add_argument('--headless')
    
    driver = webdriver.Chrome(options=options)

    try:
        if header_list == None:
            pass
        else:
            header_array = json.loads(header_list)
            driver.header_overrides = header_array
    except ValueError:
        driver.quit()
        return {"code": 500,"msg":"The header field is not JSON"}
    except Exception as e:
        driver.quit()
        return {"code": 500,"msg":"Unable to overwrite header"}
    
    driver.get(target_url)

    print(driver.page_source)
    
    time.sleep(wait_time)

    # 获取当前URL
    current_url = driver.current_url
    
    # 获取页面源代码
    page_source = driver.page_source
    
    # 获取cookie
    cookies = driver.get_cookies()

    # 是否有跳转过
    is_jump = (target_url != current_url)
    
    data = {
        "url": current_url,
        "page_source": page_source,
        "cookies": cookies,
        "is_jump": is_jump
    }
    
    driver.quit()
    return {"code": 200,"data":data}

if __name__ == '__main__':
    uvicorn.run(app='app:app', host="0.0.0.0", port=7860)