Add browser/README.md

This commit is contained in:
2025-01-27 02:16:16 +00:00
parent 3c2509dac3
commit cf80f44edc

58
browser/README.md Normal file
View File

@@ -0,0 +1,58 @@
```python
def Browser(cdp='localhost:9222', browser=type('', (), {})):
import os, json, requests, websocket
try: requests.get(f'http://{cdp}/json/version', timeout=0.1)
except requests.exceptions.RequestException:
os.popen('wsl chromium --proxy-server=172.17.112.1:8080 --ignore-certificate-errors --remote-debugging-port=9222 --remote-allow-origins=* --user-agent="Mozilla/5.0 (Linux; Android 15) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.6834.122 Mobile Safari/537.36"')
browser.url = requests.get(
f'http://{cdp}/json/version').json()['webSocketDebuggerUrl']
def send(url, request):
ws = websocket.create_connection(url)
try: ws.send(json.dumps(request)); return json.loads(ws.recv())
finally: ws.close()
def Page(page=type('', (), {})):
page.url = f'ws://{cdp}/devtools/page/' + send(browser.url, {
"id": 1,
"method": "Target.createTarget",
"params": {
"url": "about:blank",
"newWindow": True,
"background": False
}
})['result']['targetId']
def goto(url):
if '://' not in url: url = f'https://{url}'
send(page.url, {
"id": 1,
"method": "Page.navigate",
"params": {
"url": url
}
})
def evaluate(javascript):
result = send(page.url, {
"id": 1,
"method": "Runtime.evaluate",
"params": {
"expression": javascript,
"returnByValue": True
}
})
if 'result' in result and 'result' in result['result']:
return result['result']['result'].get('value')
elif 'exceptionDetails' in result['result']:
raise Exception(f"JavaScript execution failed: {result['result']['exceptionDetails']}")
page.goto = goto
page.evaluate = evaluate
return page
browser.new_page = Page
return browser
browser = Browser()
page = browser.new_page()
page.goto('example.org')
page.evaluate('console.log("hello, world")')
```