最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何在Instagram上触发“关注者”模式?

运维笔记admin6浏览0评论

如何在Instagram上触发“关注者”模式?

如何在Instagram上触发“关注者”模式?

我无法让我的人偶在Instagram中单击“关注者”链接。

[我认为Instagram已经做了一些反机器人的魔术,但也许我对此太阴谋了。

如何获得“跟随者”模式来显示?

这是我的代码:

const puppeteer = require('puppeteer');

var instagram = {
    username: 'username',
    password: 'password'
}

var run = ()=>{
    (async () => {
        const browser = await puppeteer.launch({headless: false, args: ['--lang=en-EN,en']});

        const page = await browser.newPage();
        await page.setExtraHTTPHeaders({ 'Accept-Language': 'en' });
        await page.goto('');

        await page.waitFor(1500);

        await page.click("input[type=\"text\"]")
        await page.keyboard.type(instagram.username);

        await page.click("input[type=\"password\"]")
        await page.keyboard.type(instagram.password);

        await page.click("button[type=\"submit\"]");
        await page.waitForNavigation();


        await page.click(".HoLwm");

        await page.click(".glyphsSpriteUser__outline__24__grey_9")
        await page.waitForNavigation();
        await page.waitFor(2500);

        await page.waitForSelector('a.-nal3');
        await page.evaluate(() => document.querySelector('a.-nal3')) //does not work
        //await page.click(".-nal3") //does not work
        await page.waitFor(3000);

        await page.waitFor(1000);


        //await browser.close();
    })();
}

run()
回答如下:

[在查看脚本时,我注意到我的Instagram中并非所有选择器都相同,所以我修复了它,试图不使用确切的选择器,因为它们明天可能会更改。

但是今天可以使用(请参阅有关脚本更改的注释):

var run = ()=>{
    (async () => {
        const browser = await puppeteer.launch({headless: false, args: ['--lang=en-EN,en']});
        const rand = function(){ return Math.floor(1000 + Math.random() * 2000) }

        const page = await browser.newPage();
        await page.setExtraHTTPHeaders({ 'Accept-Language': 'en' });
        await page.goto('https://www.instagram/accounts/login');

        // When you can try not to `waitFor` set periods of time
        // Wait for selectors, wait for random periods of time            
        await page.waitForSelector('button[type=\"submit\"]');

        await page.click("input[type=\"text\"]")
        await page.keyboard.type(instagram.username);
        await page.waitFor(rand())

        await page.click("input[type=\"password\"]")
        await page.keyboard.type(instagram.password);
        await page.waitFor(rand())

        await page.click("button[type=\"submit\"]");

        await page.waitForNavigation();
        await page.waitFor(rand())

        // After login we're back on the main page
        // Wait till React starts and paints the interface
        // We're waiting for "Profile" icon to be visible        
        await page.waitForSelector("span[aria-label='Profile']");

        // Then we click on the link inside of which the icon is located
        // That is link to the profile            
        await page.evaluate(() => document.querySelector("span[aria-label='Profile']").parentNode.click() );

        await page.waitForNavigation();
        await page.waitFor(rand())

        // Do not rely on a selector
        // Find a link that contains "followers" in its href
        await page.waitForSelector("a[href*='followers']");
        const followers = await page.evaluate(() => document.querySelector("a[href*='followers']").textContent)
        console.log("Total followers: " + followers);

        // Click on the followers link
        await page.evaluate( () => document.querySelector("a[href*='followers']").click() )

        // Wait for the followers modal and profiles
        await page.waitFor("div[role='presentation'] div[role='dialog'] div:nth-child(2) ul li");

        // Get followers that are in the list in the second div of that modal
        const people = await page.evaluate(() => {
            return [...document.querySelectorAll("div[role='presentation'] div[role='dialog'] div:nth-child(2) ul li")]
            .map(user => {

                const profLink = user.querySelector("a[title]")
                return {
                    "name" : profLink.textContent,
                    "url"  : profLink.href
                };

            })            
        })

        console.log(people)

        // await browser.close();
    })();
}
发布评论

评论列表(0)

  1. 暂无评论