Сайт, который я пытаюсь очистить, блокирует меня, потому что я использую автоматизированные инструменты, как мне обойти это? - PullRequest
0 голосов
/ 27 марта 2019

chegg.com блокирует меня, когда я пытаюсь очистить определенные страницы с помощью кукловода.Есть ли способ обойти это?Может быть, используя браузер инкогнито в хром?

enter image description here

Выдает ошибку при попытке войти в систему и запрещает мне входить в систему.

Я также помню, что читал что-то о заголовках или об их удалении, чтобы решить проблему?

Я планирую чистить эту страницу примерно раз в минуту, может, несколько раз в час.Не супер часто.

const puppeteer = require("puppeteer");
const CREDS = require("./creds");
var SlackBot = require("slackbots");
var channel = "testing";
var tryAgain =
  "Try again, nerd. Post a plain text chegg link Ex. https://www.chegg.com/homework-help/questions-and-answers/assume-unc...";
var tryAgainTwo =
  "Try again, nerd. Post a plain text chegg link Ex. <https://www.chegg.com/homework-help/questions-and-answers/assume-unc>...";
var imageName = "workplease2";

var bot = new SlackBot({
  token: "--SNIP--",
  name: "cheggy"
});

// bot.on("start", function() {
//   bot.postMessageToChannel(channel, "Hello world!");
// });

bot.on("message", function(data) {
  if (data.type !== "message") {
    return;
  }

  handleMessage(data.text);
});

function handleMessage(message) {
  if (
    message.includes("chegg.com/") &&
    message.includes("Try again, nerd.") === false
  ) {
    bot.postMessageToChannel(
      channel,
      "Give me a sec to find that for you. XOXO"
    );
    run();
  } else {
    if (
      message === tryAgainTwo ||
      message.includes("sec to find") ||
      message.includes(imageName)
    ) {
      return;
    }
    bot.postMessageToChannel(channel, tryAgain);
    console.log("XXXXXXXXXXXXXXXXXXXXthis is the message!" + message);
    return;
  }
}

function sendGreeting() {
  var greeting = getGreeting();
  bot.postMessageToChannel(channel, greeting);
}

function getGreeting() {
  var greetings = [
    "hello!",
    "hi there!",
    "cheerio!",
    "how do you do!",
    "¡hola!"
  ];
  return greetings[Math.floor(Math.random() * greetings.length)];
}

async function timeout(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function run() {
  const browser = await puppeteer.launch({
    headless: false
  });

  const page = await browser.newPage();

  await page.goto("https://www.chegg.com/auth?action=login&reset_password=0");

  const USERNAME_SELECTOR = "#emailForSignIn";
  const PASSWORD_SELECTOR = "#passwordForSignIn";
  //const BUTTON_SELECTOR = '#eggshell-19 > form > div > div > div > footer > button';

  await page.click(USERNAME_SELECTOR);
  await page.keyboard.type(CREDS.email);

  await page.click(PASSWORD_SELECTOR);
  await page.keyboard.type(CREDS.password);

  //await page.click(BUTTON_SELECTOR);
  await page.keyboard.press(String.fromCharCode(13));

  await page.waitForNavigation();

  await page.goto(
    "https://www.chegg.com/homework-help/questions-and-answers/assume-uncle-holds-one-stock-east-coast-bank-ecb-thinks-little-risk-agree-stock-relatively-q9069609"
  );

  await timeout(1000);

  await page.screenshot({ path: "./myfolder/" + imageName, fullPage: true });

  browser.close();

  console.log("do you reach me?");

  var fs = require("fs");
  var request = require("request");

  var SLACK_TOKEN = "--SNIP--";
  var SLACK_CHANNEL = "general";
  var filepath = "./myfolder/workplease2.png";

  var options = {
    method: "POST",
    url: "https://slack.com/api/files.upload",
    headers: { "cache-control": "no-cache" },
    formData: {
      token: SLACK_TOKEN,
      channels: SLACK_CHANNEL,
      file: fs.createReadStream(filepath)
    }
  };

  request(options, function(error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
  });
}

1 Ответ

0 голосов
/ 27 марта 2019

Сохранение файлов cookie, настройка браузера и замедление скорости кукловода до человеческих скоростей.

const browser = await puppeteer.launch({
        headless: false,
        devtools: true,
        slowMo: 250
        userDataDir: 'C:\\userData' // userDataDir <string> Path to a User Data Directory.
 });

 const page = await browser.pages();
 await page[0].setUserAgent('5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...