1

それは私を何時間も頭痛にさせました.curlを使用して私のTwitterアカウントで画像をtwitpicに投稿しようとしています.

curl -F "username=myusername" -F "password=='hwsh[g" -F "message=test twitpic" -F media=@/dos/smallapps2/smallapps/tiny-delicious/snapshot/test.png http: //twitpic.com/api/uploadAndPost

それはいつも戻る

   <?xml version="1.0" encoding="UTF-8"?>
    <rsp stat="fail">
        <err code="1001" msg="Invalid twitter username or password" />
    </rsp>

しかし、Twitterのパスワードを単純な単語(「=」、「-」、「[」を含まない)に変更すると、問題ありません

<?xml version="1.0" encoding="UTF-8"?>
<rsp status="ok">
 <statusid>4084106555</statusid>
 <userid>33348202</userid>
 <mediaid>56qrz</mediaid>
 <mediaurl>http://twitpic.com/i6qwg</mediaurl>
</rsp>

私の質問は、任意の文字を含む強力なパスワードでこれを行う方法です。ヒントください。ありがとうございました。

4

1 に答える 1

0

(テストアカウントで)まったく同じパスワードを使用して例を実行してみましたが、サンプル画像のアップロードに問題はありませんでした。エンコードが正しく行われていることを確認するために、pcapを調べました。

-desktop:~/Dropbox$ curl -vv -F "username=********" -F "password=='hwsh[g" -F "message=test twitpic" -F media=@./code_Quality_Measurement_wtfm.jpg  http://twitpic.com/api/uploadAndPost
* About to connect() to twitpic.com port 80 (#0)
*   Trying 174.36.58.233... connected
* Connected to twitpic.com (174.36.58.233) port 80 (#0)
> POST /api/uploadAndPost HTTP/1.1
> User-Agent: curl/7.19.5 (i486-pc-linux-gnu) libcurl/7.19.5 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.15
> Host: twitpic.com
> Accept: */*
> Content-Length: 46066
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=----------------------------50b761e49108
>
< HTTP/1.1 100 Continue
< HTTP/1.1 200 OK
< Server: nginx/0.6.35
< Date: Thu, 03 Dec 2009 19:06:38 GMT
< Content-Type: application/xml
< Connection: keep-alive
< X-Powered-By: PHP/5.2.9
< Content-Length: 196
<
<?xml version="1.0" encoding="UTF-8"?>
<rsp status="ok">
 <statusid>6311967029</statusid>
 <userid>**********</userid>
 <mediaid>rzu6c</mediaid>
 <mediaurl>http://twitpic.com/rzu6c</mediaurl>
* Connection #0 to host twitpic.com left intact
* Closing connection #0
</rsp>

どのシェルを使用していますか?パスワードで使用する「特殊」文字によっては、シェルが拡張されないようにするために、それらを別の方法でエスケープする必要がある場合があります。

コマンドラインで二重引用符を使用する場合は常に、特にパスワードにドル記号($)が含まれている場合は、変数の展開に対処する必要があります。パスワードフィールドを一重引用符で囲み、パスワード内の一重引用符を明示的にエスケープすることをお勧めします。

-F 'password==\'hwsh[g'
于 2009-12-03T19:15:15.367 に答える