mirror of
https://github.com/zedeus/nitter.git
synced 2024-12-22 23:15:33 +00:00
Remove user agents
This commit is contained in:
parent
e0b141daf9
commit
43b0bdc08a
|
@ -1,70 +0,0 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
import random, strformat, strutils, sequtils
|
||||
|
||||
randomize()
|
||||
|
||||
const rvs = [
|
||||
"11.0", "40.0", "42.0", "43.0", "47.0", "50.0", "52.0", "53.0", "54.0",
|
||||
"61.0", "66.0", "67.0", "69.0", "70.0"
|
||||
]
|
||||
|
||||
proc rv(): string =
|
||||
if rand(10) < 1: ""
|
||||
else: "; rv:" & sample(rvs)
|
||||
|
||||
# OS
|
||||
|
||||
const enc = ["; U", "; N", "; I", ""]
|
||||
|
||||
proc linux(): string =
|
||||
const
|
||||
window = ["X11", "Wayland", "Unknown"]
|
||||
arch = ["i686", "x86_64", "arm"]
|
||||
distro = ["", "; Ubuntu/14.10", "; Ubuntu/16.10", "; Ubuntu/19.10",
|
||||
"; Ubuntu", "; Fedora"]
|
||||
sample(window) & sample(enc) & "; Linux " & sample(arch) & sample(distro)
|
||||
|
||||
proc windows(): string =
|
||||
const
|
||||
nt = ["5.1", "5.2", "6.0", "6.1", "6.2", "6.3", "6.4", "9.0", "10.0"]
|
||||
arch = ["; WOW64", "; Win64; x64", "; ARM", ""]
|
||||
trident = ["", "; Trident/5.0", "; Trident/6.0", "; Trident/7.0"]
|
||||
"Windows " & sample(nt) & sample(enc) & sample(arch) & sample(trident)
|
||||
|
||||
const macs = toSeq(6..15).mapIt($it) & @["14_4", "10_1", "9_3"]
|
||||
|
||||
proc mac(): string =
|
||||
"Macintosh; Intel Mac OS X 10_" & sample(macs) & sample(enc)
|
||||
|
||||
# Browser
|
||||
|
||||
proc presto(): string =
|
||||
const p = ["2.12.388", "2.12.407", "22.9.168", "2.9.201", "2.8.131", "2.7.62",
|
||||
"2.6.30", "2.5.24"]
|
||||
const v = ["10.0", "11.0", "11.1", "11.5", "11.6", "12.00", "12.14", "12.16"]
|
||||
&"Presto/{sample(p)} Version/{sample(v)}"
|
||||
|
||||
# Samples
|
||||
|
||||
proc product(): string =
|
||||
const opera = ["Opera/9.80", "Opera/12.0"]
|
||||
if rand(20) < 1: "Mozilla/5.0"
|
||||
else: sample(opera)
|
||||
|
||||
proc os(): string =
|
||||
let r = rand(10)
|
||||
let os =
|
||||
if r < 6: windows()
|
||||
elif r < 9: linux()
|
||||
else: mac()
|
||||
&"({os}{rv()})"
|
||||
|
||||
proc browser(prod: string): string =
|
||||
if "Opera" in prod: presto()
|
||||
else: "like Gecko"
|
||||
|
||||
# Agent
|
||||
|
||||
proc getAgent*(): string =
|
||||
let prod = product()
|
||||
&"{prod} {os()} {browser(prod)}"
|
|
@ -5,7 +5,7 @@ import asynchttpserver, asyncstreams, asyncfile, asyncnet
|
|||
import jester
|
||||
|
||||
import router_utils
|
||||
import ".."/[types, formatters, agents, utils]
|
||||
import ".."/[types, formatters, utils]
|
||||
|
||||
export asynchttpserver, asyncstreams, asyncfile, asyncnet
|
||||
export httpclient, os, strutils, asyncstreams, base64, re
|
||||
|
@ -14,10 +14,8 @@ const
|
|||
m3u8Mime* = "application/vnd.apple.mpegurl"
|
||||
maxAge* = "max-age=604800"
|
||||
|
||||
let mediaAgent* = getAgent()
|
||||
|
||||
proc safeFetch*(url, agent: string): Future[string] {.async.} =
|
||||
let client = newAsyncHttpClient(userAgent=agent)
|
||||
proc safeFetch*(url: string): Future[string] {.async.} =
|
||||
let client = newAsyncHttpClient()
|
||||
try: result = await client.getContent(url)
|
||||
except: discard
|
||||
finally: client.close()
|
||||
|
@ -34,7 +32,7 @@ proc proxyMedia*(req: jester.Request; url: string): Future[HttpCode] {.async.} =
|
|||
result = Http200
|
||||
let
|
||||
request = req.getNativeReq()
|
||||
client = newAsyncHttpClient(userAgent=mediaAgent)
|
||||
client = newAsyncHttpClient()
|
||||
|
||||
try:
|
||||
let res = await client.get(url)
|
||||
|
@ -116,14 +114,14 @@ proc createMediaRouter*(cfg: Config) =
|
|||
|
||||
var content: string
|
||||
if ".vmap" in url:
|
||||
let m3u8 = getM3u8Url(await safeFetch(url, mediaAgent))
|
||||
let m3u8 = getM3u8Url(await safeFetch(url))
|
||||
if m3u8.len > 0:
|
||||
content = await safeFetch(url, mediaAgent)
|
||||
content = await safeFetch(url)
|
||||
else:
|
||||
resp Http404
|
||||
|
||||
if ".m3u8" in url:
|
||||
let vid = await safeFetch(url, mediaAgent)
|
||||
let vid = await safeFetch(url)
|
||||
content = proxifyVideo(vid, cookiePref(proxyVideos))
|
||||
|
||||
resp content, m3u8Mime
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
import asyncdispatch, httpclient, times, sequtils, json, random
|
||||
import strutils, tables
|
||||
import zippy
|
||||
import types, agents, consts, http_pool
|
||||
import types, consts, http_pool
|
||||
|
||||
const
|
||||
maxConcurrentReqs = 5 # max requests at a time per token, to avoid race conditions
|
||||
|
@ -65,7 +65,6 @@ proc fetchToken(): Future[Token] {.async.} =
|
|||
"accept-encoding": "gzip",
|
||||
"accept-language": "en-US,en;q=0.5",
|
||||
"connection": "keep-alive",
|
||||
"user-agent": getAgent(),
|
||||
"authorization": auth
|
||||
})
|
||||
|
||||
|
|
Loading…
Reference in a new issue