2

自从 TradingView 开放他们的 webhook 支持以来,我一直在努力弄清楚为什么我的服务器没有收到任何信号。到目前为止,我已经完成了以下工作:

  • 确保端口已打开,确保 TradingView 实际上正在发送 POST 请求
  • 尝试在准系统 nodejs 服务器、flask 服务器上进行 POST,最后尝试使用 nginx 反向代理到 flask 服务器。
  • 在 webhook.site 上交叉引用传入的 POST 标头和正文,在 Postman 以及其他工具上复制它,我的服务器很好地收到了它们

您可以在此处实时看到信号:http ://webhook.site/#!/48e29a5b-d266-4021-8b96-0039371b3643/2005d010-e3ae-4077-8808-af34491f5a4d/

但是在交付过程中的某个地方显然出了问题,因为在 nginx 日志和 unix 日志中甚至没有任何请求的痕迹。这绝对不是防火墙或 CORS 问题,或者我在使用工具进行复制时也会遇到同样的问题,对吧?有谁能帮我破解这个案子吗?

这是我的 nginx 配置:

    server {
    listen 80;
    server_name lunarlabs.org;

    location / {
      add_header 'Access-Control-Allow-Origin' '*';
      add_header 'Access-Control-Allow-Credentials' 'true';
      add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
      add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
      return 301 https://$host$request_uri;
    }

}

server {
      listen 443 ssl;
      server_name lunarlabs.org;
      ssl_certificate /etc/letsencrypt/live/***.org/cert.pem;
      ssl_certificate_key /etc/letsencrypt/live/***.org/privkey.pem;
      # ...
      access_log  /var/log/nginx.log;
      error_log /var/log/nginxerror.log;

      root /var/www/html/public;
      index index.php;

    location / {
      add_header 'Access-Control-Allow-Origin' '*';
      add_header 'Access-Control-Allow-Credentials' 'true';
      add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
      add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,X-Forwarded-For,content-length';
      include proxy_params;
      proxy_pass http://unix:/home/tvhook/***;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection 'upgrade';
      proxy_set_header Host $host;
      proxy_cache_bypass $http_upgrade;
    }
}

我设置的演示 webhook 服务器可以通过https://lunarlabs.org/webhook访问——任何 JSON 格式的 POST 数据都应该返回 200。但是 TradingView 的信号看起来真的不喜欢我的服务器或我的服务器真的不喜欢他们的要求。

4

4 回答 4

1

我有同样的问题。

Tradingview 支持报告错误:“x509:证书由未知机构签名”。但是 curl 请求对我来说效果很好。

我正在使用 Comodo SSL 证书,结果发现我没有在 nginx 中设置“链证书”。设置它并重新启动 nginx 有帮助。电视形式的 Webhook 现在工作正常。

于 2019-08-29T12:44:45.480 回答
0

我遇到了同样的问题,不过我的设置可能有点不同。

阿帕奇+烧瓶

tradingview_alert = request.get_json(force=True)

获取 Flask 请求中收到的数据

于 2019-08-26T09:51:38.303 回答
0

发布https://lunarlabs.org/webhook : x509: 由未知机构签署的证书

curl --data 'ds' ' https://lunarlabs.org/webhook ' curl: (60) 对等证书无法使用已知 CA 证书进行身份验证 更多详细信息请参见:http: //curl.haxx.se/docs/sslcerts。 html

curl 默认使用证书颁发机构 (CA) 公钥(CA 证书)的“捆绑包”执行 SSL 证书验证。如果默认捆绑文件不够用,您可以使用 --cacert 选项指定备用文件。如果此 HTTPS 服务器使用捆绑包中表示的 CA 签名的证书,则证书验证可能由于证书问题而失败(证书可能已过期,或者名称可能与 URL 中的域名不匹配)。如果您想关闭 curl 对证书的验证,请使用 -k(或 --insecure)选项。

于 2019-08-26T08:02:48.663 回答
0

我已经尝试过 Windows 和 Linux(ubuntu) 服务器(使用 Apache),并且似乎都收到了 ping,但消息数据为空。直到今天我才发现问题(我怀疑电视不能用curl成功)。

所以,我有两个选择:

1)移动到“邮件到短信”挂钩,并使用简单的https://cloudmailin.com服务

或者

2) 使用 Webhook 的直接链接,例如:

警报1:example.com/?action=BUY
警报2:example.com/?action=SELL

所以,那么你不会关心空消息,而是提取$_GET查询变量。

于 2019-09-17T08:56:20.180 回答