Bonjour,

je suis entrain d'écrire un script bash (j'espère être dans la bonne section) pour downloader et uploader des fichier sur mon compte hubic depuis mon VPS.

J'ai réussi à sauvegarder un cookie avec :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
curl --cookie $HOME/c_hubic --cookie-jar $HOME/c_hubic --data "sign-in-email=$login&sign-in-password=$password&action=&offer=" https://hubic.com/home/logcheck.php -v --user-agent "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0"
J'arrive à télécharger un fichier en récupérant une donnée vie LiveHTTP de Firefox :
https://hubic.com/home/browser/download/

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
POST /home/browser/download/ HTTP/1.1
Host: hubic.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: https://hubic.com/home/browser/
Cookie: _pk_id.21.5aa0=8d461e8ae8f1ce6d.1401223401.4.1401350467.1401348022.; in=true; bb_lastvisit=1401225814; bb_lastactivity=0; hubic.com=R3691269564; HUBIC=9kvchfbc0bldl6tvsibqg086m2; _pk_ses.21.5aa0=*
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 74
dlName=nomepisodes.ods&files=%255B%2522default%2Fnomepisodes.ods%2522%255D
Pour cela j'utilise mon script de la façon suivante : hubic.sh -d "dlName=nomepisodes.ods&files=%255B%2522default%2Fnomepisodes.ods%2522%255D"
Le code est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
-d)
nom=$(echo "$2"|cut -d "&" -f1|cut -d "=" -f2)

echo $nom

curl --cookie $HOME/c_hubic --data "$2" https://hubic.com/home/browser/download/ --user-agent "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0" -C - -o $nom
Jusque là tout va .....

Le problème va se corser avec la fonction UPLOAD ainsi que les options que propose CURL

J'ai donc d'abord fait une analyse via LiveHTTP

Il y a d'bord une première requête :
https://hubic.com/home/browser/prepareUpload/

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
POST /home/browser/prepareUpload/ HTTP/1.1
Host: hubic.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: https://hubic.com/home/browser/
Content-Length: 100
Cookie: _pk_id.21.5aa0=8d461e8ae8f1ce6d.1401223401.4.1401350467.1401348022.; in=true; bb_lastvisit=1401225814; bb_lastactivity=0; hubic.com=R3691269564; HUBIC=9kvchfbc0bldl6tvsibqg086m2; _pk_ses.21.5aa0=*
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
max_file_size=14157&max_file_count=1&expires=1401351367776&path=/default/&redirect=&name=exemple.zip
Cela donne dans mon script :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
fullfile=$(echo "$2") # la syntaxe est hubic.sh -u exemple.zip
destination='/new/' # ici c le répertoire à la racine d'Hubic

echo "generating file metadata..."
# Thanx to http://root.suumitsu.eu/wiki/doku.ph...h:hubic-upload
file=$(basename "$fullfile")
filesize=$(stat -c%s "$fullfile")
filesize_human=$(stat -c%s "$fullfile")
filetype=$(file --mime-type "$fullfile" | awk -F' ' '{print $2}')
filemtime=$(stat -c %Y "$fullfile")
filedate=$(date -u --rfc-3339=seconds --date="@$filemtime" | awk -F'+' '{print $1}' 
| tr " " T)

# récupération des infos sur le fichier pris du script http://root.suumitsu.eu/wiki/doku.ph...h:hubic-upload

echo "#### summary ####"
echo "file: $file"
echo "filepath: $fullfile"
echo "filesize: $filesize"
echo "filetype: $filetype"
echo "file mod date: $filedate"
echo "destination: $destination"
echo "#### end summary ####"

prepare="max_file_size=$filesize&max_file_count=1&expires=$(date +%s)$[$RANDOM %999]&path=/default&redirect=&name=$file"

echo $prepare

curl -sq --cookie "$HOME/c_hubic" --data "$prepare" https://hubic.com/home/browser/prepareUpload/ > okprepare
cela va générer

Code : Sélectionner tout - Visualiser dans une fenêtre à part
curl -sq --cookie /root/c_hubic --data "max_file_size=14157&max_file_count=1&expires=1401351834907&path=/default&redirect=&name=exemple.zip" https://hubic.com/home/browser/prepareUpload/
et sauvegarder le résultat dans le fichier okprepare qui se présente sous la forme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
{"answer":{"status":200,"hubic":{"signature":"17f7f8778f9a5f200f4962c81f242ae6364a8a5f","url":"https:\/\/lb1.hubic.ovh.net\/v1\/AUTH_c844b4623a316d1155aa15096642847c","redirect":"","max_file_size":"14157","max_file_count":"1","expires":"1401351834907"}},"version":"1.0","error":null,"id":0}
j'utilise grep et sed pour creer mes variables $signature $url $redirect $max_file_size $max_file_count et $expires

Ensuite je regarde avec LiveHTTP la suite et je vois ça :

https://lb1.hubic.ovh.net/v1/AUTH_c8...2847c/default/

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
POST /v1/AUTH_c844b4623a316d1155aa15096642847c/default/ HTTP/1.1
Host: lb1.hubic.ovh.net
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: https://hubic.com/home/browser/
Content-Length: 15139
Content-Type: multipart/form-data; boundary=---------------------------93198771310375276991714696608
Origin: https://hubic.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
-----------------------------93198771310375276991714696608
Content-Disposition: form-data; name="max_file_size"

14157
-----------------------------93198771310375276991714696608
Content-Disposition: form-data; name="max_file_count"

1
-----------------------------93198771310375276991714696608
Content-Disposition: form-data; name="expires"

1401351367776
-----------------------------93198771310375276991714696608
Content-Disposition: form-data; name="redirect"


-----------------------------93198771310375276991714696608
Content-Disposition: form-data; name="signature"

08957962e909d86bc73b52194b14d9832bbc259d
-----------------------------93198771310375276991714696608
Content-Disposition: form-data; name="name"

exemple.zip
-----------------------------93198771310375276991714696608
Content-Disposition: form-data; name="file1"; filename="exemple.zip"
Content-Type: application/zip

PK
HTTP/1.1 201 Created
Content-Length: 0
Access-Control-Expose-Headers: cache-control, content-language, content-type, expires, last-modified, pragma, etag, x-timestamp, x-trans-id
Last-Modified: Thu, 29 May 2014 08:16:46 GMT
Etag: c14565ed80133052a2715688d7e2852f
Access-Control-Allow-Origin: https://hubic.com
Content-Type: text/html; charset=UTF-8
X-Trans-Id: tx2f37f30e2af74f659368d3089b685029
Date: Thu, 29 May 2014 08:16:47 GMT
Connection: keep-alive
----------------------------------------------------------
donc au niveau des commandes CURL j'ai essayé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
curl --cookie $HOME/c_hubic \
-F max_file_size="$max_file_size" \
-F max_file_count='1' \
-F expires="$expires" \
-F redirect='' \
-F signature="$signature" \
-F "name=file1;filename=$(basename $2)" \
-ksO  $url/default/

curl --cookie /root/c_hubic -F max_file_size=14157 -F max_file_count=1 -F expires=1 -F redirect= -F signature=f72e827554f6a621e3e554a658d1935f2c552263 -F name=file1;filename=exemple.zip -ksO https://lb1.hubic.ovh.net/v1/AUTH_c8...2847c/default/
mais sans succès.

J'essaie surtout de comprendre comment passer de l'analyse de LiveHTTP vers CURL.

Merci de vos éclaircissement

Cordialement,