Playwright Python配置免费代理出现net::ERR_TIMED_OUT错误求助
Playwright配置HTTP代理超时错误的解决办法
问题详情
从免费代理站点获取了代理203.176.179.255:8080,用Playwright写了如下代码:
from playwright.sync_api import sync_playwright def run(playwright): chromium = playwright.chromium browser = chromium.launch(channel='chrome',headless=False,proxy={"server":"http://203.176.179.255:8080"}) page = browser.new_page() page.goto("https://grabify.link/4R47U5") with sync_playwright() as playwright: run(playwright)
运行后触发超时错误:
File "C:/Users/NNB-Suppliers/AppData/Local/Programs/Python/Python37/playwright test.py", line 12, in <module> run(playwright) File "C:/Users/NNB-Suppliers/AppData/Local/Programs/Python/Python37/playwright test.py", line 8, in run page.goto("https://grabify.link/4R47U5") File "C:\Users\NNB-Suppliers\AppData\Local\Programs\Python\Python37\lib\site-packages\playwright\sync_api\_generated.py", line 7432, in goto url=url, timeout=timeout, waitUntil=wait_until, referer=referer File "C:\Users\NNB-Suppliers\AppData\Local\Programs\Python\Python37\lib\site-packages\playwright\_impl\_sync_base.py", line 104, in _sync return task.result() File "C:\Users\NNB-Suppliers\AppData\Local\Programs\Python\Python37\lib\site-packages\playwright\_impl\_page.py", line 494, in goto return await self._main_frame.goto(**locals_to_params(locals())) File "C:\Users\NNB-Suppliers\AppData\Local\Programs\Python\Python37\lib\site-packages\playwright\_impl\_frame.py", line 136, in goto await self._channel.send("goto", locals_to_params(locals())) File "C:\Users\NNB-Suppliers\AppData\Local\Programs\Python\Python37\lib\site-packages\playwright\_impl\_connection.py", line 44, in send lambda: self.inner_send(method, params, False) File "C:\Users\NNB-Suppliers\AppData\Local\Programs\Python\Python37\lib\site-packages\playwright\_impl\_connection.py", line 387, in wrap_api_call return await cb() File "C:\Users\NNB-Suppliers\AppData\Local\Programs\Python\Python37\lib\site-packages\playwright\_impl\_connection.py", line 78, in inner_send result = next(iter(done)).result() playwright._impl._api_types.Error: net::ERR_TIMED_OUT at https://grabify.link/4R47U5 =========================== logs =========================== navigating to "https://grabify.link/4R47U5", waiting until "load" ============================================================
解决方法
1. 先确认代理是否可用
免费代理稳定性极差,大概率是这个代理已经失效。用curl测试连通性:
curl -x http://203.176.179.255:8080 https://grabify.link/4R47U5
如果curl也超时,直接更换代理即可——免费代理站点的列表中多数是过期或不可用的,建议多尝试几个。
2. 核对代理协议与目标站点匹配
你访问的是HTTPS站点,需确保代理支持HTTPS请求。部分HTTP代理仅能处理HTTP流量,无法转发HTTPS请求,会导致超时。若代理支持HTTPS,可尝试将配置中的协议改为https:
browser = chromium.launch(channel='chrome',headless=False,proxy={"server":"https://203.176.179.255:8080"})
多数HTTP代理可通过CONNECT方法处理HTTPS请求,但如果仍不行,需更换支持HTTPS的代理。
3. 延长超时时间或调整等待策略
Playwright默认goto超时为30秒,若代理网速较慢,可手动设置更长的超时时间:
page.goto("https://grabify.link/4R47U5", timeout=60000) # 设置为60秒超时
或调整等待策略,仅等待DOM加载完成而非页面完全加载,减少等待时长:
page.goto("https://grabify.link/4R47U5", wait_until="domcontentloaded")
4. 排查本地网络限制
部分公司内网或地区网络会屏蔽免费代理IP,导致无法连接。可尝试切换至手机热点网络测试,排除本地网络的限制。
5. 代理需认证时添加账号密码
若代理要求用户名和密码认证,需在配置中补充相关信息:
browser = chromium.launch( channel='chrome', headless=False, proxy={ "server": "http://203.176.179.255:8080", "username": "你的用户名", "password": "你的密码" } )
免费代理通常无需认证,但如果遇到407错误则需添加。
内容的提问来源于stack exchange,提问作者Ajay Pun Magar
相关产品推荐
相关产品推荐

