Add workaround for Twitter's layout A/B testing

Fixes #110
This commit is contained in:
Zed
2020-01-19 08:34:32 +01:00
parent 6b16ad2ce0
commit ba57511a01
10 changed files with 43 additions and 21 deletions

View File

@@ -2,11 +2,13 @@ import httpclient, asyncdispatch, htmlparser, options
import strutils, json, xmltree, uri
import ../types
import consts
import consts, cookie
var guestIdCookie = "guest_id=" & getGuestId()
proc genHeaders*(headers: openArray[tuple[key: string, val: string]];
agent: string; referer: Uri; lang=true;
auth=false; xml=false): HttpHeaders =
auth=false; xml=false; guestId=false): HttpHeaders =
result = newHttpHeaders({
"referer": $referer,
"user-agent": agent,
@@ -16,13 +18,14 @@ proc genHeaders*(headers: openArray[tuple[key: string, val: string]];
if auth: result["authority"] = "twitter.com"
if lang: result["accept-language"] = consts.lang
if xml: result["x-requested-with"] = "XMLHttpRequest"
if guestId: result["cookie"] = guestIdCookie
for (key, val) in headers:
result[key] = val
proc genHeaders*(agent: string; referer: Uri; lang=true;
auth=false; xml=false): HttpHeaders =
genHeaders([], agent, referer, lang, auth, xml)
auth=false; xml=false; guestId=false): HttpHeaders =
genHeaders([], agent, referer, lang, auth, xml, guestId)
template newClient*() {.dirty.} =
var client = newAsyncHttpClient()