-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathpastable_py.R
68 lines (61 loc) · 2.3 KB
/
pastable_py.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# ua = "Mozilla%252F5.0%2B%28iPhone%253B%2BCPU%2BiPhone%2BOS%2B12_2%2Blike%2BMac%2BOS%2BX%29%2BAppleWebKit%252F605.1.15%2B%28KHTML%2C%2Blike%2BGecko%29%2BVersion%252F13.0%2BMobile%252F15E148%2BSafari%252F604.1"
# browser(url = "test", ua = ua)
import asyncio
import pyppeteer
import random
import time
import json
import string
import atexit
import requests
import logging
class browser:
def __init__(self, url, ua, debug=False):
self.url = url
self.debug = debug
self.referrer = "https://www.tiktok.com/"
self.userAgent = ua #"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.0 Safari/537.36)"
self.args = [
"--no-sandbox",
"--disable-setuid-sandbox",
"--disable-infobars",
"--window-position=0,0",
"--ignore-certifcate-errors",
"--ignore-certifcate-errors-spki-list",
"--user-agent=" + self.userAgent
]
self.options = {
'args': self.args,
'headless': True,
'ignoreHTTPSErrors': True,
'userDataDir': "./tmp",
'handleSIGINT': False,
'handleSIGTERM': False,
'handleSIGHUP': False
}
loop = asyncio.new_event_loop()
loop.run_until_complete(self.start())
async def start(self):
self.browser = await pyppeteer.launch(self.options)
self.page = await self.browser.newPage()
await self.page.evaluateOnNewDocument("""() => {delete navigator.__proto__.webdriver;}""")
await stealth(self.page)
await self.page.goto("about:blank", {
'waitUntil': "load"
})
await self.page.setUserAgent(self.userAgent)
await self.page.evaluate("() => { " + self.__get_js() + " }")
self.signature = await self.page.evaluate('''() => {
var urls = ["''' + self.url + '''"]
var token = urls.map(x => window.byted_acrawler.sign({ url: x}))
// var t = {}
// webpackJsonp.filter(x => typeof x[1]['duD4'] === "function")[0][1].duD4(null, t)
// var token = urls.map(x => t.sign({ url: x}))
return token;
}''')
self.data = await self.page.content()
await self.browser.close()
await self.browser.close()
self.browser.process.communicate()
def __get_js(self):
return requests.get("https://sf16-muse-va.ibytedtos.com/obj/rc-web-sdk-gcs/acrawler.js").text