tryAccounts.mjs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. import Vorpal from "vorpal";
  2. import { chromium } from "playwright";
  3. import os from "os";
  4. import fs from "fs";
  5. import path from "path";
  6. import rawCookies from "./cookies.js";
  7. import { setTimeout } from "timers/promises";
  8. const accounts = fs
  9. .readFileSync("accounts.txt")
  10. .toString()
  11. .split("\n")
  12. .filter((i) => i.trim())
  13. .map((i) =>
  14. i
  15. .split("\t")
  16. .map((i) => i.trim())
  17. .filter((i) => i)
  18. )
  19. .map((i) => {
  20. const res = {};
  21. const m =
  22. /^(?<email>[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}):(?<pwd>.*)$/.exec(
  23. i[0]
  24. );
  25. if (i[18]) {
  26. res.cookies = JSON.parse(i[18].replace(/^Cookie[::]/, ""));
  27. console.log(res.cookies);
  28. }
  29. if (m) {
  30. res.email = m.groups.email;
  31. res.pwd = m.groups.pwd;
  32. }
  33. return res;
  34. });
  35. const __dirname = new URL(".", import.meta.url).pathname;
  36. const vorpal = new Vorpal();
  37. function formatCookies(cookies) {
  38. return cookies.map((i) => {
  39. switch (i.sameSite) {
  40. case "no_restriction":
  41. case "None":
  42. i.sameSite = "None";
  43. break;
  44. case "lax":
  45. case "Lax":
  46. i.sameSite = "Lax";
  47. break;
  48. case "strict":
  49. case "Strict":
  50. i.sameSite = "Strict";
  51. break;
  52. default:
  53. i.sameSite = undefined;
  54. break;
  55. }
  56. return i;
  57. });
  58. }
  59. let context = null;
  60. let i = 11;
  61. vorpal.command("y").action(async function (args, cb) {
  62. fs.writeFileSync(
  63. path.join(__dirname, "validAccounts", `${accounts[i].email}.json`),
  64. JSON.stringify(
  65. {
  66. email: accounts[i].email,
  67. pwd: accounts[i].pwd,
  68. cookies: accounts[i].cookies,
  69. },
  70. null,
  71. 4
  72. )
  73. );
  74. await context.close();
  75. cb();
  76. });
  77. vorpal.command("n").action(async function (args, cb) {
  78. await context.close();
  79. cb();
  80. });
  81. async function start() {
  82. for (; i < accounts.length; i++) {
  83. const userDataDir = fs.mkdtempSync(path.join(os.tmpdir(), "myapp"));
  84. const pathToExtension = path.join(
  85. __dirname,
  86. "fngmhnnpilhplaeedifhccceomclgfbg"
  87. );
  88. // 启动浏览器
  89. context = await chromium.launchPersistentContext(userDataDir, {
  90. headless: false,
  91. // proxy: {
  92. // server: "199.188.92.93:8000",
  93. // username: "proxy",
  94. // password: "rPZHv9U",
  95. // },
  96. args: [
  97. `--disable-extensions-except=${pathToExtension}`,
  98. `--load-extension=${pathToExtension}`,
  99. ],
  100. userAgent:
  101. "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3105.3 Safari/537.36",
  102. });
  103. context.addCookies(formatCookies(accounts[i].cookies));
  104. const page = await context.newPage();
  105. await page.goto("https://paypal.com/myaccount/summary");
  106. await new Promise((resolve) => {
  107. context.on("close", resolve);
  108. });
  109. }
  110. }
  111. vorpal.command("start").action(async function (args, cb) {
  112. start();
  113. cb();
  114. });
  115. vorpal.delimiter(">").show();