jjzjj

javascript - Chrome webrequest 在 requestBody 中看不到 POST 数据

coder 2025-02-12 原文

我在从 Facebook 操作获取 POST 数据时遇到问题。当您在 FB 上提交评论时,它会发布到此网址:https://www.facebook.com/ufi/add/comment/?__pc=EXP1%3ADEFAULT 在请求中,帖子的帖子数据存在: 这是来自帖子数据的实际评论的示例:

comment_text:test this is a test

当我尝试通过 Chrome 扩展程序访问它时,我似乎无法获取这些数据。我试过解析 requestBody,但它是空的。然后我尝试查看是否有任何其他请求方法可以工作,但我似乎无法在任何地方找到数据。

list .json:

{
"background": {
    "scripts": [ "background.js" ]
 },
"manifest_version": 2,

"name": "Interaction Tracker",
"description": "Track social interactions by social site and customizable categories.",
"version": "1.0",

"browser_action": {
  "default_icon": "icon.png",
  "default_popup": "popup.html"
},
"permissions": [ "webRequest", "webRequestBlocking", "webNavigation", "tabs", "<all_urls>", "debugger" ]
}

背景.js

chrome.webRequest.onBeforeRequest.addListener(
  function(details) {
    if (details.method == "POST") {
        var fb_add_comment_regex = new RegExp(".*facebook\.com\/ufi\/add\/comment.*");
        if ( fb_add_comment_regex.test(details.url) ) {
            console.log(JSON.stringify(details));
            }
        }
  },
    {urls: ["<all_urls>"]},
    ["blocking", "requestBody"]
    );

chrome.webRequest.onBeforeSendHeaders.addListener(
  function(details) {
    if (details.method == "POST") {
        var fb_add_comment_regex = new RegExp(".*facebook\.com\/ufi\/add\/comment.*");
        if ( fb_add_comment_regex.test(details.url) ) {
            console.log(JSON.stringify(details));
            }
        }
  },
    {urls: ["<all_urls>"]},
    ["blocking", "requestHeaders"]
    );


chrome.webRequest.onSendHeaders.addListener(
  function(details) {
    if (details.method == "POST") {
        var fb_add_comment_regex = new RegExp(".*facebook\.com\/ufi\/add\/comment.*");
        if ( fb_add_comment_regex.test(details.url) ) {
            console.log(JSON.stringify(details));
            }
        }
  },
    {urls: ["<all_urls>"]},
    ["requestHeaders"]
    );

chrome.webRequest.onHeadersReceived.addListener(
  function(details) {
    if (details.method == "POST") {
        var fb_add_comment_regex = new RegExp(".*facebook\.com\/ufi\/add\/comment.*");
        if ( fb_add_comment_regex.test(details.url) ) {
            console.log(JSON.stringify(details));
            }
        }
  },
    {urls: ["<all_urls>"]},
    ["blocking", "responseHeaders"]
    );

chrome.webRequest.onAuthRequired.addListener(
  function(details) {
    if (details.method == "POST") {
        var fb_add_comment_regex = new RegExp(".*facebook\.com\/ufi\/add\/comment.*");
        if ( fb_add_comment_regex.test(details.url) ) {
            console.log(JSON.stringify(details));
            }
        }
  },
    {urls: ["<all_urls>"]},
    ["blocking", "responseHeaders"]
    );

chrome.webRequest.onResponseStarted.addListener(
  function(details) {
    if (details.method == "POST") {
        var fb_add_comment_regex = new RegExp(".*facebook\.com\/ufi\/add\/comment.*");
        if ( fb_add_comment_regex.test(details.url) ) {
            console.log(JSON.stringify(details));
            }
        }
  },
    {urls: ["<all_urls>"]},
    ["responseHeaders"]
    );

chrome.webRequest.onBeforeRedirect.addListener(
  function(details) {
    if (details.method == "POST") {
        var fb_add_comment_regex = new RegExp(".*facebook\.com\/ufi\/add\/comment.*");
        if ( fb_add_comment_regex.test(details.url) ) {
            console.log(JSON.stringify(details));
            }
        }
  },
    {urls: ["<all_urls>"]},
    ["responseHeaders"]
    );

chrome.webRequest.onCompleted.addListener(
  function(details) {
    if (details.method == "POST") {
        var fb_add_comment_regex = new RegExp(".*facebook\.com\/ufi\/add\/comment.*");
        if ( fb_add_comment_regex.test(details.url) ) {
            console.log(JSON.stringify(details));
            }
        }
  },
    {urls: ["<all_urls>"]},
    ["responseHeaders"]
    );

以下是每种请求类型的 console.log 语句的输出:

在请求前

{
  "frameId": 0,
  "method": "POST",
  "parentFrameId": -1,
  "requestBody": {
    "raw": [
      {
        "bytes": {

        }
      }
    ]
  },
  "requestId": "6724",
  "tabId": 93,
  "timeStamp": 1444749653166.1,
  "type": "xmlhttprequest",
  "url": "https:\/\/www.facebook.com\/ufi\/add\/comment\/?__pc=EXP1%3ADEFAULT"
}

onBeforeSendHeaders

{
  "frameId": 0,
  "method": "POST",
  "parentFrameId": -1,
  "requestHeaders": [
    {
      "name": "Origin",
      "value": "https:\/\/www.facebook.com"
    },
    {
      "name": "X-DevTools-Emulate-Network-Conditions-Client-Id",
      "value": "AB63796C-002A-4670-8A56-547F8D13CA8C"
    },
    {
      "name": "User-Agent",
      "value": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/45.0.2454.101 Safari\/537.36"
    },
    {
      "name": "Content-Type",
      "value": "application\/x-www-form-urlencoded"
    },
    {
      "name": "Accept",
      "value": "*\/*"
    },
    {
      "name": "Referer",
      "value": "https:\/\/www.facebook.com\/GrauZug?ref=br_rs"
    },
    {
      "name": "Accept-Encoding",
      "value": "gzip, deflate"
    },
    {
      "name": "Accept-Language",
      "value": "en-US,en;q=0.8"
    },
    {
      "name": "Cookie",
      "value": "datr=pvA2VDnTeMjGlWhVYRrnhBtO; lu=gh2TS-IuZkO-Ku-YhAzkiFIw; p=-2; c_user=100000720140344; fr=07LqqXcCamvBIa9Ww.AWU6e_qoHRglPj51gS-CF6uF-r8.BVY1Qk.DT.FYB.0.AWVvgvJA; xs=79%3A403i2b7V6bYSIA%3A2%3A1439311770%3A8344; csm=2; s=Aa4bsJIf94u-JaGr.BVyieb; presence=EDvF3EtimeF1444749507EuserFA21B00720140344A2EstateFDsb2F1444656454966Et2F_5b_5dElm2FnullEuct2F1444743344BEtrFnullEtwF2707054892EatF1444748467285G444749507665CEchFDp_5f1B00720140344F101CC; act=1444749649564%2F26"
    }
  ],
  "requestId": "6724",
  "tabId": 93,
  "timeStamp": 1444749653173.2,
  "type": "xmlhttprequest",
  "url": "https:\/\/www.facebook.com\/ufi\/add\/comment\/?__pc=EXP1%3ADEFAULT"
}

onSendHeaders

{
  "frameId": 0,
  "method": "POST",
  "parentFrameId": -1,
  "requestHeaders": [
    {
      "name": "Origin",
      "value": "https:\/\/www.facebook.com"
    },
    {
      "name": "X-DevTools-Emulate-Network-Conditions-Client-Id",
      "value": "AB63796C-002A-4670-8A56-547F8D13CA8C"
    },
    {
      "name": "User-Agent",
      "value": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/45.0.2454.101 Safari\/537.36"
    },
    {
      "name": "Content-Type",
      "value": "application\/x-www-form-urlencoded"
    },
    {
      "name": "Accept",
      "value": "*\/*"
    },
    {
      "name": "Referer",
      "value": "https:\/\/www.facebook.com\/GrauZug?ref=br_rs"
    },
    {
      "name": "Accept-Encoding",
      "value": "gzip, deflate"
    },
    {
      "name": "Accept-Language",
      "value": "en-US,en;q=0.8"
    },
    {
      "name": "Cookie",
      "value": "datr=pvA2VDnTeMjGlWhVYRrnhBtO; lu=gh2TS-IuZkO-Ku-YhAzkiFIw; p=-2; c_user=100000720140344; fr=07LqqXcCamvBIa9Ww.AWU6e_qoHRglPj51gS-CF6uF-r8.BVY1Qk.DT.FYB.0.AWVvgvJA; xs=79%3A403i2b7V6bYSIA%3A2%3A1439311770%3A8344; csm=2; s=Aa4bsJIf94u-JaGr.BVyieb; presence=EDvF3EtimeF1444749507EuserFA21B00720140344A2EstateFDsb2F1444656454966Et2F_5b_5dElm2FnullEuct2F1444743344BEtrFnullEtwF2707054892EatF1444748467285G444749507665CEchFDp_5f1B00720140344F101CC; act=1444749649564%2F26"
    }
  ],
  "requestId": "6724",
  "tabId": 93,
  "timeStamp": 1444749653175.2,
  "type": "xmlhttprequest",
  "url": "https:\/\/www.facebook.com\/ufi\/add\/comment\/?__pc=EXP1%3ADEFAULT"
}

onHeadersReceived

{
  "frameId": 0,
  "method": "POST",
  "parentFrameId": -1,
  "requestId": "6724",
  "responseHeaders": [
    {
      "name": "status",
      "value": "200"
    },
    {
      "name": "cache-control",
      "value": "private, no-cache, no-store, must-revalidate"
    },
    {
      "name": "content-encoding",
      "value": "gzip"
    },
    {
      "name": "content-security-policy",
      "value": "default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' *.akamaihd.net *.atlassolutions.com blob: chrome-extension:\/\/lifbcibllhkdhoafpjfnlhfpfgnpldfl;style-src * 'unsafe-inline';connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss:\/\/*.facebook.com:* https:\/\/fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com 127.0.0.1:*;"
    },
    {
      "name": "content-type",
      "value": "application\/x-javascript; charset=utf-8"
    },
    {
      "name": "date",
      "value": "Tue, 13 Oct 2015 15:20:55 GMT"
    },
    {
      "name": "expires",
      "value": "Sat, 01 Jan 2000 00:00:00 GMT"
    },
    {
      "name": "pragma",
      "value": "no-cache"
    },
    {
      "name": "public-key-pins-report-only",
      "value": "max-age=500; pin-sha256=\"WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18=\"; pin-sha256=\"r\/mIkG3eEpVdm+u\/ko\/cwxzOMo1bk4TyHIlByibiA5E=\"; pin-sha256=\"q4PO2G2cbkZhZ82+JgmRUyGMoAeozA+BSXVXQWB8XWQ=\"; report-uri=\"http:\/\/reports.fb.com\/hpkp\/\""
    },
    {
      "name": "strict-transport-security",
      "value": "max-age=15552000; preload"
    },
    {
      "name": "vary",
      "value": "Accept-Encoding"
    },
    {
      "name": "x-content-type-options",
      "value": "nosniff"
    },
    {
      "name": "x-fb-debug",
      "value": "fd7Bt\/uIX2rLmngndhprmXlX3mTkZboQqcPSaw9kQt0aQUEfX3ikBMT1016i1c2RPbts9Jhbb0+bVGWPqk\/j7Q=="
    },
    {
      "name": "x-frame-options",
      "value": "DENY"
    },
    {
      "name": "x-xss-protection",
      "value": "0"
    }
  ],
  "statusCode": 200,
  "statusLine": "HTTP\/1.1 200 OK",
  "tabId": 93,
  "timeStamp": 1444749655679.6,
  "type": "xmlhttprequest",
  "url": "https:\/\/www.facebook.com\/ufi\/add\/comment\/?__pc=EXP1%3ADEFAULT"
}

onResponseStarted

{
  "frameId": 0,
  "fromCache": false,
  "ip": "31.13.93.3",
  "method": "POST",
  "parentFrameId": -1,
  "requestId": "6724",
  "responseHeaders": [
    {
      "name": "status",
      "value": "200"
    },
    {
      "name": "cache-control",
      "value": "private, no-cache, no-store, must-revalidate"
    },
    {
      "name": "content-encoding",
      "value": "gzip"
    },
    {
      "name": "content-security-policy",
      "value": "default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' *.akamaihd.net *.atlassolutions.com blob: chrome-extension:\/\/lifbcibllhkdhoafpjfnlhfpfgnpldfl;style-src * 'unsafe-inline';connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss:\/\/*.facebook.com:* https:\/\/fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com 127.0.0.1:*;"
    },
    {
      "name": "content-type",
      "value": "application\/x-javascript; charset=utf-8"
    },
    {
      "name": "date",
      "value": "Tue, 13 Oct 2015 15:20:55 GMT"
    },
    {
      "name": "expires",
      "value": "Sat, 01 Jan 2000 00:00:00 GMT"
    },
    {
      "name": "pragma",
      "value": "no-cache"
    },
    {
      "name": "public-key-pins-report-only",
      "value": "max-age=500; pin-sha256=\"WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18=\"; pin-sha256=\"r\/mIkG3eEpVdm+u\/ko\/cwxzOMo1bk4TyHIlByibiA5E=\"; pin-sha256=\"q4PO2G2cbkZhZ82+JgmRUyGMoAeozA+BSXVXQWB8XWQ=\"; report-uri=\"http:\/\/reports.fb.com\/hpkp\/\""
    },
    {
      "name": "strict-transport-security",
      "value": "max-age=15552000; preload"
    },
    {
      "name": "vary",
      "value": "Accept-Encoding"
    },
    {
      "name": "x-content-type-options",
      "value": "nosniff"
    },
    {
      "name": "x-fb-debug",
      "value": "fd7Bt\/uIX2rLmngndhprmXlX3mTkZboQqcPSaw9kQt0aQUEfX3ikBMT1016i1c2RPbts9Jhbb0+bVGWPqk\/j7Q=="
    },
    {
      "name": "x-frame-options",
      "value": "DENY"
    },
    {
      "name": "x-xss-protection",
      "value": "0"
    }
  ],
  "statusCode": 200,
  "statusLine": "HTTP\/1.1 200 OK",
  "tabId": 93,
  "timeStamp": 1444749655683.3,
  "type": "xmlhttprequest",
  "url": "https:\/\/www.facebook.com\/ufi\/add\/comment\/?__pc=EXP1%3ADEFAULT"
}

完成

{
  "frameId": 0,
  "fromCache": false,
  "ip": "31.13.93.3",
  "method": "POST",
  "parentFrameId": -1,
  "requestId": "6724",
  "responseHeaders": [
    {
      "name": "status",
      "value": "200"
    },
    {
      "name": "cache-control",
      "value": "private, no-cache, no-store, must-revalidate"
    },
    {
      "name": "content-encoding",
      "value": "gzip"
    },
    {
      "name": "content-security-policy",
      "value": "default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' *.akamaihd.net *.atlassolutions.com blob: chrome-extension:\/\/lifbcibllhkdhoafpjfnlhfpfgnpldfl;style-src * 'unsafe-inline';connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss:\/\/*.facebook.com:* https:\/\/fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com 127.0.0.1:*;"
    },
    {
      "name": "content-type",
      "value": "application\/x-javascript; charset=utf-8"
    },
    {
      "name": "date",
      "value": "Tue, 13 Oct 2015 15:20:55 GMT"
    },
    {
      "name": "expires",
      "value": "Sat, 01 Jan 2000 00:00:00 GMT"
    },
    {
      "name": "pragma",
      "value": "no-cache"
    },
    {
      "name": "public-key-pins-report-only",
      "value": "max-age=500; pin-sha256=\"WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18=\"; pin-sha256=\"r\/mIkG3eEpVdm+u\/ko\/cwxzOMo1bk4TyHIlByibiA5E=\"; pin-sha256=\"q4PO2G2cbkZhZ82+JgmRUyGMoAeozA+BSXVXQWB8XWQ=\"; report-uri=\"http:\/\/reports.fb.com\/hpkp\/\""
    },
    {
      "name": "strict-transport-security",
      "value": "max-age=15552000; preload"
    },
    {
      "name": "vary",
      "value": "Accept-Encoding"
    },
    {
      "name": "x-content-type-options",
      "value": "nosniff"
    },
    {
      "name": "x-fb-debug",
      "value": "fd7Bt\/uIX2rLmngndhprmXlX3mTkZboQqcPSaw9kQt0aQUEfX3ikBMT1016i1c2RPbts9Jhbb0+bVGWPqk\/j7Q=="
    },
    {
      "name": "x-frame-options",
      "value": "DENY"
    },
    {
      "name": "x-xss-protection",
      "value": "0"
    }
  ],
  "statusCode": 200,
  "statusLine": "HTTP\/1.1 200 OK",
  "tabId": 93,
  "timeStamp": 1444749655684.2,
  "type": "xmlhttprequest",
  "url": "https:\/\/www.facebook.com\/ufi\/add\/comment\/?__pc=EXP1%3ADEFAULT"
}

上面未列出的任何其他监听器都没有输出。

有人知道吗?

最佳答案

您的 console.log 显示 requestBody 为空。

你只需要解析原始字节:

If the request method is PUT or POST, and the body is not already parsed in formData, then the unparsed request body elements are contained in this array.

例如,如果发布的数据是一个字符串,那么您可以在 onBeforeRequest listener 中获取它的值:

var postedString = decodeURIComponent(String.fromCharCode.apply(null,
                                      new Uint8Array(details.requestBody.raw[0].bytes)));

根据站点脚本使用的编码,有很多方法可以解码字符串。

关于javascript - Chrome webrequest 在 requestBody 中看不到 POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33106709/

有关javascript - Chrome webrequest 在 requestBody 中看不到 POST 数据的更多相关文章

  1. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  2. ruby - 如何模拟 Net::HTTP::Post? - 2

    是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou

  3. ruby-on-rails - rails : How to make a form post to another controller action - 2

    我知道您通常应该在Rails中使用新建/创建和编辑/更新之间的链接,但我有一个情况需要其他东西。无论如何我可以实现同样的连接吗?我有一个模型表单,我希望它发布数据(类似于新View如何发布到创建操作)。这是我的表格prohibitedthisjobfrombeingsaved: 最佳答案 使用:url选项。=form_for@job,:url=>company_path,:html=>{:method=>:post/:put} 关于ruby-on-rails-rails:Howtomak

  4. ruby - 有人可以帮助解释类创建的 post_initialize 回调吗 (Sandi Metz) - 2

    我正在阅读SandiMetz的POODR,并且遇到了一个我不太了解的编码原则。这是代码:classBicycleattr_reader:size,:chain,:tire_sizedefinitialize(args={})@size=args[:size]||1@chain=args[:chain]||2@tire_size=args[:tire_size]||3post_initialize(args)endendclassMountainBike此代码将为其各自的属性输出1,2,3,4,5。我不明白的是查找方法。当一辆山地自行车被实例化时,因为它没有自己的initialize方法

  5. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  6. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

  7. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  8. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  9. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  10. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

随机推荐