Я знаю, как сгенерировать пользовательский ключ с помощью API pastebin, но как я могу использовать этот пользовательский ключ для доступа к необработанной частной пасте?
Я использую Lua для этого.
Я знаю, как сгенерировать пользовательский ключ с помощью API pastebin, но как я могу использовать этот пользовательский ключ для доступа к необработанной частной пасте?
Я использую Lua для этого.
Получение необработанных выходных данных вставки не является частью Pastebin API:
Эта опция на самом деле не является частью нашего API, но вы все равно можете ее использовать. Чтобы получить RAW-выход пасты, вы можете использовать наш URL-адрес вывода RAW-данных:
http://pastebin.com/raw.php?i=
Просто добавьте paste_key в конце этого URL-адреса, и вы получите вывод в формате RAW.
Поскольку приватные вставки могут видеть только те пользователи, которые их создали, я предполагаю, что они используют файл cookie для входа в систему для аутентификации. В этом случае вам нужно будет отправить его с HTTP-запросом.
Что касается реализации этого в Lua (поскольку вы не сказали, какую библиотеку вы используете), я собираюсь пойти дальше и порекомендовать модуль HTTP в LuaSocket или замечательный Luvit (http://luvit.io).
Вот вам готовый пример кода:
local https = require('ssl.https')
https.TIMEOUT= 15
local private_raw_url="https://pastebin.com/raw/YOURPAGE" -- Change raw link
local user_name, user_password = "USER", "PASS" -- and user with password
local request_body = "submit_hidden=submit_hidden&user_name=".. user_name .. "&user_password=" .. user_password .. "&submit=Login"
local resp = {}
local res, code, headers, status = https.request ( {
method = 'POST',
url = "https://pastebin.com/login",
headers = {
Host = "pastebin.com",
["Content-Type"] = "application/x-www-form-urlencoded",
["Content-Length"] = string.len(request_body),
Connection = "keep-alive",
},
source = ltn12.source.string(request_body),
sink = ltn12.sink.table(resp),
protocol = "tlsv1",
verify = "none",
verifyext = {"lsec_continue", "lsec_ignore_purpose"},
options = { "all", "no_sslv2", "no_sslv3" }
} )
if not headers['set-cookie']:find('pastebin_user') then
print('bad login')
return
end
resp={}
local cookie = headers['set-cookie'] or ''
local cookie1, cookie2, cookie3 = cookie:match("(__cfduid=%w+; ).*(PHPSESSID=%w+; ).*(pastebin_user=%w+; )" )
if cookie1 and cookie2 and cookie3 then
cookie = cookie1 .. cookie2 .. cookie3
body, code, headers= https.request{
url = private_raw_url ,
headers = {
--Host = "pastebin.com",
['Cookie'] = cookie,
['Connection'] = 'keep-alive'
},
sink = ltn12.sink.table(resp)
}
if code~=200 then return end
print( table.concat(resp) )
else
print("error match cookies!" )
end
Я знаю, что это немного поздно, чтобы ответить на вопрос, но я надеюсь, что это поможет кому-то позже.
Если вы хотите получить доступ к необработанным частным пастам, вам сначала нужно будет перечислить пасты, созданные пользователем. Это часть API. Для этого пользователь должен войти в систему.
С помощью этого API вы можете перечислить все вставки, созданные определенным пользователем. Вам нужно будет отправить действительный запрос POST по указанному ниже URL-адресу, чтобы получить доступ к данным:
http://pastebin.com/api/api_post.php
Ответ, который вы получите, будет XML-ответом следующего вида:
<paste>
<paste_key>0b42rwhf</paste_key>
<paste_date>1297953260</paste_date>
<paste_title>javascript test</paste_title>
<paste_size>15</paste_size>
<paste_expire_date>1297956860</paste_expire_date>
<paste_private>0</paste_private>
<paste_format_long>JavaScript</paste_format_long>
<paste_format_short>javascript</paste_format_short>
<paste_url>http://pastebin.com/0b42rwhf</paste_url>
<paste_hits>15</paste_hits>
</paste>
Получив это, проанализируйте XML, чтобы получить paste_key
и paste_private
. Вам нужно проверить значение paste_private
, потому что вам нужны только частные вставки. В документации говорится:
У нас есть 3 допустимых значения, которые вы можете использовать с параметром 'api_paste_private':
0 = Public 1 = Unlisted 2 = Private (only allowed in combination with api_user_key, as you have to be logged into your account to access the paste)
Итак, если в вашей пасте paste_private
установлено на 2
, получите для нее paste_key
.
Получив paste_key
, используйте вызов API, чтобы получить вставку RAW. Имя пользователя или пароль не требуются, если у вас есть ключ вставки для приватной вставки.
Радоваться, веселиться!