我正在创建一个instagram机器人,该机器人在用户的照片上发表评论。我知道已经有像InstaPy这样的解决方案,但是它对我不起作用,我自己的js解决方案已经完成了99%。
我可以通过编程方式发布帖子吗?我已经设置了textArea.value,并且尝试提交包装形式(它只是刷新页面)。我也尝试“单击”提交按钮,但它没有使它执行任何操作。我也尝试在文本区域中“键入”,但似乎没有屏幕上的任何实际用户交互以及尝试提交实际请求都是不可能的(似乎我的标题不匹配,我得到了一个403错误。)以下是我目前正在执行的代码段。如果您需要更多信息,请告诉我!谢谢:)
RETURN a,t,n
答案 0 :(得分:0)
由于未提交csrf令牌,因此出现403错误。您可以详细了解here
为了克服这一挑战,您可以使用提供高级API的库来控制Puppeteer之类的浏览器。这样一来,您就可以编写一个脚本,该脚本将运行浏览器,并像真实用户一样工作,可以在页面上随意浏览并留下注释。
以下是登录Instagram并在特定帖子下发表评论的代码示例:
const puppeteer = require('puppeteer');
(async () => {
// Starting browser
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
// Login flow
await page.goto('https://www.instagram.com/accounts/login/?source=auth_switcher');
await page.waitForSelector('input[name="username"]');
await page.type('input[name="username"]', 'username');
await page.type('input[name="password"]', 'password');
await page.click('button[type="submit"]');
// Waiting for page to refresh
await page.waitForNavigation();
// Navigate to post and submitting the comment
await page.goto('https://www.instagram.com/p/BVSCQI-FRaj/');
await page.waitForSelector('textarea');
await page.type('textarea', 'Test comment');
await page.click('button[type="submit"]');
await browser.close();
})();