小编Tho*_*orf的帖子

Puppeteer 指纹模拟

通过进行测试,我面临着 JavaScript 指纹识别,例如:

  • 音频上下文指纹
  • opengl指纹识别
  • 画布指纹
  • 安装字体指纹
  • 已安装的插件指纹
  • 网页版

我想用模拟结果替换指纹识别的结果。

指纹如何工作以及如何模拟/伪造指纹结果?

python fingerprinting node.js audio-fingerprinting puppeteer

24
推荐指数
1
解决办法
6224
查看次数

Tensorflow.js 中的内存泄漏:如何清理未使用的张量?

I'm writing a script, which sometimes leaks tensors. This can happen in multiple cases, for example when I'm training a neural network, but the training crashes. In this case, the training is interrupted and will not correctly dispose the tensors. This results in a memory leak, which I'm trying to clean up by disposing unused tensors.

Example

In the snippet below, I'm training two (very simple) models. The first run will work and will result in no leaked tensors (number …

javascript memory-leaks machine-learning node.js tensorflow.js

11
推荐指数
1
解决办法
4198
查看次数

puppeteer:在 DevTools 的网络选项卡中访问特定请求的 JSON 响应

我想直接获取屏幕截图中显示的最后一个 HTTP 请求的响应。

当前的 puppeteer 代码如下所示。有人可以告诉我如何修改它,以便它可以直接从浏览器获得 JSON 响应吗?谢谢。

const puppeteer = require('puppeteer');

(async () => {
    //  const browser = await puppeteer.launch();
    const browser = await puppeteer.launch({
        headless: false
        , args: ['--user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3312.0 Safari/537.36"']
    });
    const page = await browser.newPage();
    await page.goto('https://www.genecards.org/cgi-bin/carddisp.pl?gene=BSCL2');
    await page.goto('https://www.genecards.org/cgi-bin/carddisp.pl?gene=BSCL2');

    const linkHandlers = await page.$x("//div[@id='enhancers']//a[@data-track-event='Table See-All']");
    if (linkHandlers.length > 0) {
        await linkHandlers[0].click();
    } else {
        throw new Error("Link not found");
    }

    const html = await …
Run Code Online (Sandbox Code Playgroud)

node.js google-chrome-devtools puppeteer

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

如何使用 puppeteer 最大化浏览器窗口?

我正在尝试使用puppeteer. 我尝试了下面的代码,但浏览器没有最大化到完整模式。我也没有在 puppeteer 库中找到任何可用的函数来最大化窗口。

(async () => {
  const browser = await puppeteer.launch({headless: false , slowMo: 100, rgs: ['--start-fullscreen', '--window-size=1920,1080'], executablePath: 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe' });
  const page = await browser.newPage();

  await page.setViewport({ width: 1920, height: 1080 });
Run Code Online (Sandbox Code Playgroud)

示例图像

node.js puppeteer

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

在不知道元素总数的情况下从数据流中随机拆分元素

给定“分割比例”,我试图将数据集随机分为两组。问题是,我事先不知道数据集包含多少个项目。我的库从输入流中一个接一个地接收数据,并且期望将数据返回到两个输出流。理想情况下,应将所得的两个数据集精确地拆分为给定的拆分比率。

插图:

                            ??? stream A
 input stream ??? LIBRARY ???
                            ??? stream B
Run Code Online (Sandbox Code Playgroud)

例如,给定分流比30/70,流A有望从输入流中接收30%的元素,而流B剩余的70%。订单必须保留。


到目前为止,我的想法是:

理念1:为每个元素“掷骰子”

一个明显的方法是:对于每个元素,算法都会随机决定该元素应该进入流A还是流B。问题是,结果数据集可能与预期的分割率相去甚远。给定的拆分率50/50,所得数据拆分可能会相去甚远(甚至可能100/0是非常小的数据集)。目的是使所得的分光比尽可能接近所需的分光比。

想法2:使用缓存并随机化缓存的数据

另一个想法是在传递元素之前先缓存固定数量的元素。这将导致缓存1000个元素并改组数据(或其对应的索引以保持顺序稳定),将它们拆分并传递结果数据集。这应该工作得很好,但是我不确定对于大型数据集,随机化是否真的是随机的(我想看分布时会出现模式)。

两种算法都不是最优的,所以希望您能对我有所帮助。


背景

这是关于基于层的数据科学工具的,其中每个层都通过流从上一层接收数据。在传递数据之前,希望该层将数据(向量)拆分为训练和测试集。输入数据的范围可以从几个元素到一个永无止境的数据流(因此,这些流)。该代码是用JavaScript开发的,但是这个问题更多的是关于算法而不是实际的实现。

javascript random algorithm split data-science

8
推荐指数
2
解决办法
218
查看次数

puppeteer:无需单独下载即可获取 base64 编码的图像

在不支持下载图像或在新选项卡中打开它们的页面上,我可以使用 Chrome 开发人员(工具->网络)右键单击图像并执行“将图像复制为 URI”。

是否可以对 puppeteer 做同样的事情?

我尝试使用一些旨在将图像转换为其 base64 表示的 Node.js 模块,但它们似乎都下载图像然后返回 base64 表示。

uri node.js puppeteer

8
推荐指数
2
解决办法
6802
查看次数

console.log 消息被截断

我是木偶戏的新手。我曾经有 PhantomJS 和 CasperJS,但是在设置更新的服务器(freebsd 12)时发现对 PhantomJS 的支持已经消失,CasperJS 给了我分段错误。

我能够很好地将我的应用程序移植到 puppeteer,但遇到了一个问题,当我想从表中捕获数据时,这些数据似乎不完整或被截断。

我需要一张桌子上的所有信息,但结果总是越来越少。

我试过较小的表,但它也被截断了。不知道console.log缓冲区是否可以扩展,或者是否有更好的方法来获取表中所有tds的值。

const data = await page.$$eval('table.dtaTbl tr td', tds => tds.map((td) => {
    return td.innerHTML;
}));

console.log(data); 
Run Code Online (Sandbox Code Playgroud)

我应该能够获得所有行,但我得到了这个

[ 'SF xx/xxxx 3-3999 06-01-16',
'Sample text - POLE',
  '',

 /* tons of other rows (removed by me in this example) <- */

  '',

 /* end of output */ ... 86 more items ]
Run Code Online (Sandbox Code Playgroud)

我需要其他 86 件物品!!!因为我在执行代码时让 PHP 从标准输出中提取它。

javascript google-chrome node.js puppeteer

5
推荐指数
2
解决办法
7947
查看次数

headless false - 始终关注地址栏

我正在使用带有headless=false选项的puppeteer ,以便让用户在表单中输入一些详细信息,然后以编程方式读取结果。我希望在加载页面时光标/焦点将位于第一个输入字段上,但焦点始终位于地址栏上。有没有办法在页面内移动光标/焦点?

我已经试过了await page.focus(selector)。请找到以下示例:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({ headless: false});
  const page = await browser.newPage();
  let selector = ".w3-white.w3-padding.notranslate>form>input[name='firstname']";
  await page.goto('https://www.w3schools.com/html/html_forms.asp');
  await page.waitForSelector(selector,{waitUntil :"networkidle2"});
  await page.focus(selector);
  await page.type(selector,"aaa");

  //await browser.close();
})();
Run Code Online (Sandbox Code Playgroud)

我希望在页面加载后,用户将能够在输入字段内输入,而不必先“移动”到该字段中(通过鼠标或选项卡)。

node.js puppeteer

5
推荐指数
1
解决办法
1023
查看次数

使用 Tensorflow.js 和 tf.Tensor 处理大数据的最佳方法是什么?

我正在使用tf.Tensortf.concat()处理大型训练数据,我发现连续使用tf.concat()变得缓慢。从文件加载大数据的最佳方法是什么tf.Tensor

背景

我认为这是在 Javascript 中按数组处理数据的常用方法。要实现这一点,需要执行一些粗略的步骤。

将数据从文件加载到数组的步骤

  1. 从文件中读取行
  2. 将行解析为 Javascript 的对象
  3. 将该对象添加到数组中 Array.push()
  4. 读完一行后,我们可以在 for 循环中使用该数组。

所以我想我可以tf.concat()以与上面类似的方式使用。

将数据从文件加载到 tf.Tensor 的步骤

  1. 从文件中读取行
  2. 将行解析为 Javascript 的对象
  3. 将对象解析为 tf.Tensor
  4. 将张量添加到原始张量 tf.concat()
  5. 读完一行后,我们可以使用 tf.Tensor

一些代码

这是一些代码来测量Array.push()tf.concat()

import * as tf from "@tensorflow/tfjs"

let t = tf.tensor1d([1])
let addT = tf.tensor1d([2])

console.time()
for (let idx = 0; idx < 50000; idx++) {
    if (idx % 1000 == 0) {
        console.timeEnd()
        console.time()
        console.log(idx) …
Run Code Online (Sandbox Code Playgroud)

javascript node.js deep-learning tensorflow tensorflow.js

5
推荐指数
2
解决办法
1641
查看次数

使用特定配置打开 Puppeteer(下载 PDF 而不是 PDF 查看器)

我想用特定的配置打开 Chromium。

我正在寻找激活以下选项的配置:

设置 => 站点设置 => 权限 => PDF 文档 =>“下载 PDF 文件而不是在 Chrome 中自动打开它们”

我在这个命令行开关页面上搜索了标签,但唯一处理 pdf 的参数--print-to-pdf不符合我的需要。

你有什么想法?

node.js puppeteer

5
推荐指数
2
解决办法
3131
查看次数