1
doraf 2023-05-18 16:46:51 +08:00
telnet 服务器端口,看能建立链接不。浏览器访问这接口,看看啥效果。判断判断哪个环节有问题。
|
2
doraf 2023-05-18 16:48:15 +08:00
对不起,我没看仔细。。我错了。
|
3
doraf 2023-05-18 16:50:45 +08:00
Python Requests 构造跟 Chrome 这种浏览器发出的相同的请求,试试呢?
|
4
gablic OP @doraf #3 一样呢,加上 header 也不行。。我感觉应该是网络问题,但内网 postman 又可以通,无从下手。。
|
5
oldsix2 2023-05-18 17:00:37 +08:00
python 程序里 curl 请求下试试
|
6
knva 2023-05-18 17:06:27 +08:00 2
一眼系统代理
|
8
maybedk 2023-05-18 17:10:15 +08:00
首先,这个库叫 Requests 。之前有人用不带 s 的发起过恶意混淆。它有默认的请求头,会不会是被拦截了?另外还需要注意请求地址是不是 https 。requests 发送 ssl 请求需要 verify=False
可以再试试 httpx 这个库? |
9
NoOneNoBody 2023-05-18 17:15:09 +08:00
edge 不通有点不解
10060 是超时 先检查连接建立了没有,没有的话可能性就多了,因为部分软件通了,我先想到的是防火墙 |
10
rationa1cuzz 2023-05-18 17:18:58 +08:00
我觉得是 win 防火墙或者代理导致的,建议找个 linux 机器试试
|
11
gablic OP @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 |
12
xiaoxuan6 2023-05-18 17:26:28 +08:00
请求的时候添加 user-agent 试试
|
13
gablic OP @NoOneNoBody 应该是根本没有建立
@rationa1cuzz linux 没条件,不过找了台很干净的 win 机器测试也一样 @xiaoxuan6 加了,楼上有位兄弟建议,用能跑通 chrome 的头测试,在 Python 里就是不通 |
14
SenLief 2023-05-18 17:31:11 +08:00
大概率是被本机防火墙干掉了,你可以换一台电脑试试看。
|
15
NoOneNoBody 2023-05-18 17:37:40 +08:00
@gablic #13
问个低能的问题:你的 python.exe 允许联网了吗? |
16
gablic OP @NoOneNoBody #15 haha...百度还是可以通的
|
18
seers 2023-05-18 17:55:17 +08:00 via Android
不知道 Python 有没有 socket 库,你可以 4/7 一层一层看过去
|
19
hefish 2023-05-18 17:58:04 +08:00
应该在这边发帖的同时,问问公司网管有啥限制。。。不能放着眼前的不问。
|
20
dearmymy 2023-05-18 17:58:30 +08:00
你 request 添加本机代理,用 fiddler 之类的抓包,跟 postman 对比下哪里不同。
|
21
krixaar 2023-05-18 18:01:20 +08:00
requests 会用系统环境变量 http_proxy 和 https_proxy ,如果有先删了再试
|
22
XxxxD 2023-05-18 23:25:20 +08:00
http 2.0?
|
23
undefind 2023-05-19 04:50:19 +08:00
postman 可以直接生成 python 代码,点右侧的这个符号</> 看看和自己写的有什么区别
|
24
kkhaike 2023-05-19 14:34:11 +08:00
这种问题,抓包一下就能看出来
|
25
gablic OP 1. 公司确实有一些网络限制,问了 IT 不知道具体,但原因基本就是这个没跑了。主要疑点是为什么 postman 可以,python request 不可以。
2. 加了个内部的 http 代理后就好了,侧面验证了是公司内网封锁。 3. 根据大家建议,用 fiddler 抓包看了下,postman 没有任何 header 。 4. 就在我用 fiddler 抓 python request 包的时候,我惊讶的发现这次居然通了。我什么都没做,代码什么都没改,双缝实验般的恐怖感。。。 5. Python request 会默认带 header:User-Agent: python-requests/2.28.1 ,之前试过修改也无效,结合上一条和 header 应该关系不大。 |