【问题标题】:Create a note in privnote.com using HTTP requests使用 HTTP 请求在 privnote.com 中创建笔记
【发布时间】:2017-10-18 01:13:07
【问题描述】:

我正在尝试使用简单的 HTTP 请求(使用 cURL)从文件的内容中创建关于 privnote.com 的注释。我只能找到关于此的唯一信息是this nodeJS app,因此我将其用作参考,但到目前为止还没有运气。

这是我目前得到的:

curl -v \
    -H "Host: privnote.com" \
    -H "Connection: keep-alive" \
    -H "Content-Length: 153" \
    -H "Origin: https://privnote.com" \
    -H "X-Requested-With: XMLHttpRequest" \
    -H "User-Agent: privnote-cli/0.1.0 (https://github.com/nonrational/privnote-cli)" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Accept: */*" \
    -H "DNT: 1" \
    -H "Referer: https://privnote.com/" \
    -H "Accept-Encoding: gzip, deflate, br" \
    -H "Accept-Language: en-GB,en-US;q=0.8,en;q=0.6" \
    -X POST \
    --data-binary "@pst-np-v1.pem" \
    "https://privnote.com/legacy/"

当我提出这个请求时,我得到了500 Internal Server Error。关于如何让它发挥作用的任何想法?

最终目标是:我正在尝试将文件的内容作为注释上传,然后通过命令行全部获取 URL。

【问题讨论】:

    标签: bash curl httprequest


    【解决方案1】:

    内容需要在application/x-www-form-urlencoded发送,参数如下:

    • 数据
    • has_manual_pass
    • duration_hours
    • 不要问
    • data_type
    • notify_email
    • notify_ref

    data 参数包含以 AES 256 CBC 加密的消息,密码长度为 9 个字符

    password=siK2TDfjC
    data=$(cat pst-np-v1.pem | openssl enc -e -aes-256-cbc -k $password -a -md md5)
    
    curl -v 'https://privnote.com/' \
        -H 'X-Requested-With: XMLHttpRequest' \
        --data-urlencode "data=$data" \
        --data "has_manual_pass=false&duration_hours=0&dont_ask=false&data_type=T&notify_email=&notify_ref="
    

    可以使用jq JSON 解析器提取 JSON 字段 note_link 并连接到 #$password 以获得完整的 URI

    完整示例:

    password=siK2TDfjC
    message="a not so secret note"
    data=$(echo "$message" | openssl enc -e -aes-256-cbc -k $password -a -md md5)
    
    note_link=$(curl -s 'https://privnote.com/' \
        -H 'X-Requested-With: XMLHttpRequest' \
        --data-urlencode "data=$data" \
        --data "has_manual_pass=false&duration_hours=0&dont_ask=false&data_type=T&notify_email=&notify_ref=" \
        | jq -r --arg arg $password '.note_link + "#" + $arg')
    
    echo "note URL is $note_link"
    

    【讨论】:

    • 哇,太棒了,但问题是,密码需要随机生成吗?还是每次都一样?
    • 我想我可以这样做:head /dev/urandom | tr -dc A-Za-z0-9 | head -c9 随机生成一个 9 位密码。
    • 是的,它可以是一样的,服务器似乎没有保留已经使用的密码缓存,如果你安装了这些工具,你也可以使用pwgen -N 1 9makepasswd --maxchars=9
    猜你喜欢
    • 2012-10-26
    • 2020-09-23
    • 2021-12-01
    • 2016-01-12
    • 1970-01-01
    • 2014-06-14
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多