请教一个 Python Request 库的问题,兄弟们帮我分析一下,多谢了

2023-05-18 16:13:32 +08:00
 gablic
公司内网用 request get 某个接口,不通报错 WinError 10060 。
对方说接口没有任何限制,本以为是公司内网屏蔽问题,但试了一下好像也不是,大家帮我分析一下。。。

外网环境:
无论是 postman 还是 python ,都能正常通。

内网环境:
可以通:Postman ,PowerShell ,Chrome
不通:Edge ,Python Request

到底啥原因啊,是不是公司内网屏蔽了。。
2525 次点击
所在节点    Python
25 条回复
doraf
2023-05-18 16:46:51 +08:00
telnet 服务器端口,看能建立链接不。浏览器访问这接口,看看啥效果。判断判断哪个环节有问题。
doraf
2023-05-18 16:48:15 +08:00
对不起,我没看仔细。。我错了。
doraf
2023-05-18 16:50:45 +08:00
Python Requests 构造跟 Chrome 这种浏览器发出的相同的请求,试试呢?
gablic
2023-05-18 16:59:32 +08:00
@doraf #3 一样呢,加上 header 也不行。。我感觉应该是网络问题,但内网 postman 又可以通,无从下手。。
oldsix2
2023-05-18 17:00:37 +08:00
python 程序里 curl 请求下试试
knva
2023-05-18 17:06:27 +08:00
一眼系统代理
doraf
2023-05-18 17:06:52 +08:00
@gablic 要不抓包看看有何不同?
maybedk
2023-05-18 17:10:15 +08:00
首先,这个库叫 Requests 。之前有人用不带 s 的发起过恶意混淆。它有默认的请求头,会不会是被拦截了?另外还需要注意请求地址是不是 https 。requests 发送 ssl 请求需要 verify=False
可以再试试 httpx 这个库?
NoOneNoBody
2023-05-18 17:15:09 +08:00
edge 不通有点不解

10060 是超时
先检查连接建立了没有,没有的话可能性就多了,因为部分软件通了,我先想到的是防火墙
rationa1cuzz
2023-05-18 17:18:58 +08:00
我觉得是 win 防火墙或者代理导致的,建议找个 linux 机器试试
gablic
2023-05-18 17:25:17 +08:00
@oldsix2 我试了下 pycurl 这个库,不行: (28, "Failed to connect to xxxx port 80 after 21178 ms: Couldn't connect to server")
@knva 确实有可能,公司内网会有一些屏蔽策略,但我疑惑的是为什么 postman 能通
@maybedk 抱歉没说清,是 requests ,http ,请求头应该是干净的,而且对方说对请求头没有限制。代码 po 上来吧:
import requests
url = 'http://xxxx'
response = requests.get(url)
print(response.text)
TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
xiaoxuan6
2023-05-18 17:26:28 +08:00
请求的时候添加 user-agent 试试
gablic
2023-05-18 17:30:28 +08:00
@NoOneNoBody 应该是根本没有建立
@rationa1cuzz linux 没条件,不过找了台很干净的 win 机器测试也一样
@xiaoxuan6 加了,楼上有位兄弟建议,用能跑通 chrome 的头测试,在 Python 里就是不通
SenLief
2023-05-18 17:31:11 +08:00
大概率是被本机防火墙干掉了,你可以换一台电脑试试看。
NoOneNoBody
2023-05-18 17:37:40 +08:00
@gablic #13
问个低能的问题:你的 python.exe 允许联网了吗?
gablic
2023-05-18 17:43:02 +08:00
@NoOneNoBody #15 haha...百度还是可以通的
doraf
2023-05-18 17:46:39 +08:00
@gablic 要不试试用 Wireshark 这种抓包看看,先在本机抓包,发现不了问题的话,再去服务端抓包看看。
seers
2023-05-18 17:55:17 +08:00
不知道 Python 有没有 socket 库,你可以 4/7 一层一层看过去
hefish
2023-05-18 17:58:04 +08:00
应该在这边发帖的同时,问问公司网管有啥限制。。。不能放着眼前的不问。
dearmymy
2023-05-18 17:58:30 +08:00
你 request 添加本机代理,用 fiddler 之类的抓包,跟 postman 对比下哪里不同。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/941032

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX