一般的网站代理都是使用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)
最终效果如下图所示: