Add browser/README.md
This commit is contained in:
58
browser/README.md
Normal file
58
browser/README.md
Normal 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")')
|
||||
```
|
||||
Reference in New Issue
Block a user