标签: cloudflare

为什么我在此cURL调用中的请求正文中出现格式错误的JSON?

我一直试图使用他们自己的文档中提供的示例来调用CloudFlare API v4.

这是示例的代码

curl -X PUT "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59" \ -H "X-Auth-Email: user@example.com" \ -H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \ -H "Content-Type: application/json" \ --data '{"id":"372e67954025e0ba6aaa6d586b9e0b59","type":"A","name":"example.com","content":"1.2.3.4","proxiable":true,"proxied":false,"ttl":120,"locked":false,"zone_id":"023e105f4ecef8ad9ca31a8372d0c353","zone_name":"example.com","created_on":"2014-01-01T05:20:00.12345Z","modified_on":"2014-01-01T05:20:00.12345Z","data":{}}'
Run Code Online (Sandbox Code Playgroud)

这也可以在更新DNS记录中找到

使用Windows cmd.exe运行此命令,我需要首先使它成为单行,所以我删除了"\"并重新格式化它(两次),确保我在过程中没有改变任何部分.

这是一行中的相同代码:

curl -X PUT "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59" -H "X-Auth-Email: user@example.com" -H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" -H "Content-Type: application/json" --data '{"id":"372e67954025e0ba6aaa6d586b9e0b59","type":"A","name":"example.com","content":"1.2.3.4","proxiable":true,"proxied":false,"ttl":120,"locked":false,"zone_id":"023e105f4ecef8ad9ca31a8372d0c353","zone_name":"example.com","created_on":"2014-01-01T05:20:00.12345Z","modified_on":"2014-01-01T05:20:00.12345Z","data":{}}'
Run Code Online (Sandbox Code Playgroud)

当我在cmd中运行这个单行程序时,它可以工作,但我在请求正文中得到格式错误的JSON,但是,目视检查,记事本++上的格式化以及通过JSON验证程序运行都是正面的,这个JSON(从CloudFlare文档中复制) )没有畸形.

错误信息

{"success":false,"errors":[{"code":6007,"message":"Malformed JSON in request body"}],"messages":[],"result":null}
Run Code Online (Sandbox Code Playgroud)

谷歌搜索此错误消息或错误代码没有给我任何东西,这个相同的命令适用于运行我老板的Linux的电脑.

有人可以告诉我,如果这是一个已知的错误,如果JSON真的是格式错误或者是否有其他想法?

谢谢

dns json curl cloudflare

10
推荐指数
1
解决办法
2万
查看次数

带Cloudflare的S3禁止直接访问

我试图让Cloudflare充当S3上托管文件的CDN,这样任何人都无法直接访问这些文件.例如:

S3桶: cdn.mydomain.com.s3.amazonaws.com

CDN(Cloudflare): cdn.mydomain.com

我想要的是能够访问cdn.mydomain.com/file.jpg(Cloudflare)但不能访问cdn.mydomain.com.s3.amazonaws.com/file.jpg(S3).

现在我在Cloudflare上配置了一个指向我的存储桶的CNAME,以及以下CORS:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>Authorization</AllowedHeader>
    </CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)

如果我尝试通过S3或CDN访问任何文件,我将被拒绝.如果我公开一个文件(也就是被授予的每个人),我可以通过S3和CDN访问该文件.

我曾试图改变AllowedOrigin*.mydomain.com,但没有运气.

amazon-s3 cors cloudflare

10
推荐指数
1
解决办法
2289
查看次数

配置NGINX + CloudFlare + SSL

所以...

我在端口8080上的服务器上运行节点应用程序,我正在尝试使用NGINX和CloudFlare使其能够在SSL上运行.请注意以下内容......

  1. 我的主机正在运行Ubuntu 16.04 LTS
  2. 我目前正在使用CloudFlare的通用SSL(免费套餐)
  3. 我将测试主机DNS设置为test.company.com
  4. 我已将此帖子中的CloudFlare origin pull证书复制到我的测试盒的/ etc/nginx/certs中

...我以前的NGINX配置看起来像......

server {
    listen 80;

    location / {
        proxy_pass http://localhost:8080;
    }
}
Run Code Online (Sandbox Code Playgroud)

......它现在看起来像......

# HTTP
server {
  listen 80;
  listen [::]:80 default_server ipv6only=on;
  return 301 https://$host$request_uri;
}

# HTTPS
server {
  listen 443;
  server_name test.company.com;

  ssl on;
  ssl_client_certificate /etc/nginx/certs/cloudflare.crt;
  ssl_verify_client on;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
  ssl_prefer_server_ciphers on;

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://localhost:8080/;
    proxy_ssl_session_reuse off;
    proxy_set_header Host …
Run Code Online (Sandbox Code Playgroud)

ssl https nginx cloudflare ubuntu-16.04

10
推荐指数
1
解决办法
2万
查看次数

将视频文件上传到 Amazon S3 时收到 413 请求实体太大

将视频文件上传到 Amazon S3 时,文件上传达到 100%,然后我收到响应413 Request Entity Too Large。如何解决此问题以便我可以将视频文件上传到 Amazon S3?

我使用 Nodejs、Express、Heroku、Cloudflare 和 Amazon S3。

file-upload amazon-s3 node.js cloudflare http-status-code-413

10
推荐指数
1
解决办法
2万
查看次数

Cloudflare CDN 和 NGINX 的区别

我正在阅读,但很难理解两者之间的区别。我在我的应用程序中使用 Heroku,直到现在我使用 NGINX 来提供我的内容。我将我的静态文件预压缩为 gzip 并像这样提供它们,关闭 NGINX 配置文件中的动态压缩。

现在我正在学习 Cloudflare CDN。正如我所见,它也提供静态内容。同时使用 NGINX 和 Cloudflare 有什么意义,有什么好处?

当用户访问网站时,流量如何?

可不可能是:

最终用户 -> Cloudflare DNS -> CDN -> NGINX -> Heroku

最终用户 <- Cloudflare DNS <- CDN <- NGINX <- Heroku

dns cdn nginx static-content cloudflare

10
推荐指数
2
解决办法
5111
查看次数

Cloudflare 如何区分 Selenium 和 Requests 流量?

语境

我目前正在尝试使用 Python 中的 Selenium 和 Requests 模块构建一个小型机器人。
但是,我想与之交互的网页在 Cloudflare 后面运行。
我的 python 脚本使用 stem 模块在 Tor 上运行。
我的流量分析基于使用 Persist Logs 的 Firefox 的“开发者选项->网络”。

到目前为止我的发现:

  • Selenium 的 Firefox webdriver 经常可以访问网页,而无需经过“检查浏览器页面”(返回码 503)和“验证码页面”(返回码 403)。
  • 使用相同的用户代理请求会话对象总是导致“验证码页面”(返回代码 403)。

如果 Cloudflare 正在检查我的 Javascript 功能,我的请求模块不应该返回 503 吗?

代码示例

driver = webdriver.Firefox(firefox_profile=fp, options=fOptions)
driver.get("https://www.cloudflare.com")   # usually returns code 200 without verifying the browser

session = requests.Session()
# ... applied socks5 proxy for both http and https ... #
session.headers.update({"user-agent": driver.execute_script("return navigator.userAgent;")})
page = session.get("https://www.cloudflare.com")
print(page.status_code) # return …
Run Code Online (Sandbox Code Playgroud)

python selenium web-crawler cloudflare python-requests

10
推荐指数
1
解决办法
2906
查看次数

如何绕过cloudflare浏览器检查selenium Python

我正在尝试使用 selenium Python 访问网站。但该网站正在通过cloudflare不断检查。没有其他页面出现。

检查此处的屏幕截图。

在此输入图像描述

我尝试过未检测到的铬,但它根本不起作用。

python cloudflare selenium-chromedriver selenium-webdriver

10
推荐指数
1
解决办法
2万
查看次数

使用 Puppeteer 绕过 Cloudflare

我正在尝试使用我的 Puppeteer 进入 hotbit.io。但当 puppeteer 尝试进入页面时,我遇到了“在访问 www.hotbit.io 之前检查您的浏览器”。当我以“headless: false”运行程序时,它会在 5 秒后重定向到该页面。但我的问题是,我想以无头方式运行它:true。当我在 headless: true 中运行它时,它在 cloudflare 页面上超时 超时时的屏幕截图

我努力了:

看起来,cloudflare 知道我正在激活无头功能。

有谁知道如何跳过 cloudflare 重定向页面?

node.js cloudflare puppeteer

10
推荐指数
1
解决办法
2万
查看次数

网关超时:网关未收到上游服务器的及时响应

我一次用一个网址发送300个时事通讯,2分钟后再次刷新,然后发送下一个300.

但是我收到了这个错误:

网关超时

网关没有收到来自上游服务器或应用程序的及时响应.

此外,尝试使用ErrorDocument处理请求时遇到404 Not Found错误.

我已将最大执行次数设置为3600

ini_set('max_execution_time', 3600);
Run Code Online (Sandbox Code Playgroud)

但我经常得到同样的错误.请帮我找出解决方案.

php apache cloud cloudflare

9
推荐指数
1
解决办法
3万
查看次数

CloudFlare JS 挑战正在打破我的 SPA

我有一个基于 React 的 SPA,它通过 S3 托管在一个子域 react.mydomain.com 上……它与托管在另一个子域 api.mydomain.com 上的 VPS 上的 PHP REST API 通信。api.mydomain.com 位于 CloudFlare 之后。Web 应用程序位于 CloudFront 之后,因为它位于 AWS 上。

我遇到了机器人请求直接发送到 API 淹没我的 VPS 的问题,我想使用 CloudFlare 的 JS 挑战功能来缓解。

然而,似乎正在发生的事情是用户能够加载 React webapp(它不在 CloudFlare 后面)。然后,提示JS挑战的请求会立即失败并返回503响应,因为它是一个AJAX请求,与Javascript挑战不兼容。

我想我可以通过捕获错误和重定向来处理这个问题。但是,如果我手动强制我自己的浏览器导航到 api.mydomain.com URL,我将看到 CloudFlare 挑战并通过它。但是,如果我随后导航回我的 react.mydomain.com SPA,则 OPTIONS 请求将失败,因为它无法附加告诉 CloudFlare 它已通过的 cookie。

我不明白如何调整我的基础设施,以便我可以利用使用 JS 挑战。目前我被限制使用速率限制,但我发现当我变得足够严重以至于用户开始抱怨时,我仍然让大约 75% 或更多不需要的机器人流量通过。

security cors cloudflare laravel reactjs

9
推荐指数
1
解决办法
1373
查看次数