Как я могу получить доступ к необработанной частной пасте из pastebin?

Я знаю, как сгенерировать пользовательский ключ с помощью API pastebin, но как я могу использовать этот пользовательский ключ для доступа к необработанной частной пасте?

Я использую Lua для этого.


person MetaDark    schedule 04.11.2012    source источник


Ответы (3)


Получение необработанных выходных данных вставки не является частью 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).

person MBlanc    schedule 07.06.2014

Вот вам готовый пример кода:

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
person Mike V.    schedule 25.07.2017

Я знаю, что это немного поздно, чтобы ответить на вопрос, но я надеюсь, что это поможет кому-то позже.

Если вы хотите получить доступ к необработанным частным пастам, вам сначала нужно будет перечислить пасты, созданные пользователем. Это часть 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. Имя пользователя или пароль не требуются, если у вас есть ключ вставки для приватной вставки.

Радоваться, веселиться!

person An SO User    schedule 21.06.2014