木偶-点击广告

时间:2018-08-04 17:16:50

标签: javascript puppeteer

我正在为一个想要在其网站上的广告信息的人做一些自由职业。我需要点击带有Puppeteer的广告,并获取生成的页面网址。

这就是我尝试过的。

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({headless: false});
  const page = await browser.newPage();
  await page.goto('http://example.com/page/ad', {waitUntil: 'networkidle2'});

  await page.click('#aw0')
})();

它不断返回Error: No node found for selector: #aw0

2 个答案:

答案 0 :(得分:1)

点击广告肯定可以,但是您需要对每个广告部分进行不同的调整,并注意后果。

免责声明

阅读并使用答案的内容需要您自担风险,

  • 请注意,自动点击广告可能会导致广告网络被禁止,因为有很多方法可以确定点击是否来自实际用户。
  • 这项工作已经进行了很多年,并且以失败告终。下面是显示它的工作原理,但是同样,您/客户帐户将被禁止使用,因为如果我是广告网络,我会避免这种简单的作弊方法。
  • 某些广告将触发弹出式窗口,因此也要注意鬼铬过程。
  • 运行木偶和点击广告的成本实际上可能比在网站上进行营销和类似的工作要高。

概述

将此页面与这个简单的广告一起考虑,如果您尝试进行检查,将会看到iframe,但进一步了解,它是iframe中的一个iframe,在广告服务和目标网站之间差异很大。

enter image description here

在框架内,框架内单击元素...?

here on the issue所述,到目前为止,我们可以执行此操作以单击框架中的某些内容。

await page.goto('https://example.com');
const frame = await page.frames().find(f => f.name() === 'someIframe');
const button = await frame.$('button');
button.click();

现在,如果我们要单击此特定元素,该怎么办?名称不存在,ID是随机的。转到实际的广告页面将显示iframe,但再次检查免责声明,

如果看到的话,主iframe src会显示/ads/adprotect300.aspx,因此我们可以将其打开并单击其中的元素。我们还看到iframe的名称以mdns开头。考虑到所有研究工作,我们可以编写这样的代码,

const page = await browser.newPage();
await page.goto('http://example.com/ads/adprotect300.aspx', {waituntil: "networkidle0"});
await page.waitFor('iframe');
await page.waitFor(4000); // artificial wait for randomness
const frame = await page.frames().find(f=>f.name().includes('mdns'));
const ad = await frame.$('div > a');
ad.click();

在此网站上,它打开了一个新标签页,如前所述,它单击了,现在我们要做的就是获取所有打开的标签页的链接,因此,如果在新标签页上有任何弹出窗口或重定向,它将被获取

await page.waitFor(2000);
const pages = await browser.pages()
console.log(pages.map(page=>page.url()))

还有更好的方法来等待导航和所有操作,但是我只是在说明可以做什么。结果,

[ 'chrome-search://local-ntp/local-ntp.html',
  'http://example.com/ads/adprotect300.aspx',
  'https://adwebsite/activity/htb/candy/pc?ref=93454&i=704ea49d-7b0b-4c05-b4d0-f0225ecc7154&h=12700290a03e232a14fa0f1cf35e27a346d91f6e&c=878146837666' ]

让我再次提醒您,这显​​然是非法的,帐户可能会面临风险。风险自负。

答案 1 :(得分:0)

相关问题