一种简单粗暴的网页代理模式
一般的网站代理都是使用socks5等代理协议,有时候可靠性不是那么好。本文介绍一种简单粗暴的网页代理模式,可以完成网页的基本浏览功能。
- 实现原理
非常简单,代理端只需要运行playwright、selenium等网页自动化工具,后台运行真正的浏览器(无头的),这样用户端在访问网页时,代理端真正的访问目标网址,然后把访问截图返回给用户,用户在截图上就当作真正的网页操作,包括点击和输入文本等操作。 - 访问网页
如下面示例代码所示,只需要把截图存在文件中,用户端访问此图片文件即可。
def screenshot(self)->bytes:
'''获取当前网页截图'''
print('开始截图...')
self.playwright.screenshot(path=self.screenshot_filename)
print('已完成截图.')
from starlette.responses import StreamingResponse,FileResponse
#screenshot_bytes = self.playwright.page.screenshot(full_page=True)
#return StreamingResponse(iter([screenshot_bytes]))
return FileResponse(self.screenshot_filename)
- 鼠标点击操作
def on_click(self,x:str,y:str)->None:
'''点击坐标'''
self.playwright.page.mouse.click(int(x),int(y))
- 输入文本操作
def type_text(self,text:str)->str:
'''输入文本'''
self.playwright.page.keyboard.type(text)
最终效果如下图所示: