Portál AbcLinuxu, 8. května 2025 04:33

Dotaz: curl upload na uložto

16.7.2020 08:04 jejda | skóre: 25 | blog: jejda
curl upload na uložto
Přečteno: 1191×
Odpovědět | Admin
Řeším jak ze vzdáleného počítače na který mám přístup přes ssh, poslat soubor na uložto. Stahovat ten soubor nejdřív k sobě a potom přes web browser to tam ručně naklikávat je docela opruz. Zvlášť když se jedná o něco většího. Když zkusím něco takového:
curl --user uzivatel:heslo --upload-file /tmp/soubor --location --verbose https://uloz.to/ > /dev/null 2> ulozto.log
tak se sice soubor někam fyzicky odešle ale když si potom u sebe otevřu web browser a lognu na uloz.to, tak ho nikde v tom jejich webovém průzkumníkovi nevidím. Ten verbose log vypadá nějak takto (uživatelské jméno jsem změnil):
* Uses proxy env variable no_proxy == 'localhost,127.*,192.168.*,10.*'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 77.48.29.200:443...
* Connected to uloz.to (77.48.29.200) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [97 bytes data]
* TLSv1.2 (IN), TLS handshake, Certificate (11):
{ [2555 bytes data]
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
{ [333 bytes data]
* TLSv1.2 (IN), TLS handshake, Server finished (14):
{ [4 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
} [70 bytes data]
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
* SSL connection using TLSv1.2 / ECDHE-RSA-CHACHA20-POLY1305
* ALPN, server did not agree to a protocol
* Server certificate:
*  subject: CN=*.uloz.to
*  start date: Jun 19 04:36:02 2020 GMT
*  expire date: Sep 17 04:36:02 2020 GMT
*  subjectAltName: host "uloz.to" matched cert's "uloz.to"
*  issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
*  SSL certificate verify ok.
* Server auth using Basic with user 'uzivatel'
} [5 bytes data]
> PUT /soubor HTTP/1.1
> Host: uloz.to
> Authorization: Basic c2lsdmFoZWQ6dXRwdzIy
> User-Agent: curl
> Accept: */*
> Content-Length: 15728640
> Expect: 100-continue
> 
{ [5 bytes data]
* Mark bundle as not supporting multiuse
< HTTP/1.1 100 Continue
} [5 bytes data]

  3 15.0M    0     0    3  576k      0  1125k  0:00:13 --:--:--  0:00:13 1122k
  7 15.0M    0     0    7 1088k      0   721k  0:00:21  0:00:01  0:00:20  721k
 10 15.0M    0     0   10 1536k      0   622k  0:00:24  0:00:02  0:00:22  622k
 13 15.0M    0     0   13 2048k      0   569k  0:00:26  0:00:03  0:00:23  569k
 16 15.0M    0     0   16 2496k      0   550k  0:00:27  0:00:04  0:00:23  550k
 19 15.0M    0     0   19 2944k      0   539k  0:00:28  0:00:05  0:00:23  478k
 22 15.0M    0     0   22 3456k      0   527k  0:00:29  0:00:06  0:00:23  469k
 25 15.0M    0     0   25 3904k      0   520k  0:00:29  0:00:07  0:00:22  470k
 28 15.0M    0     0   28 4352k      0   514k  0:00:29  0:00:08  0:00:21  472k
 31 15.0M    0     0   31 4864k      0   508k  0:00:30  0:00:09  0:00:21  470k
 34 15.0M    0     0   34 5312k      0   505k  0:00:30  0:00:10  0:00:20  469k
 37 15.0M    0     0   37 5760k      0   502k  0:00:30  0:00:11  0:00:19  468k
 40 15.0M    0     0   40 6272k      0   499k  0:00:30  0:00:12  0:00:18  469k
 43 15.0M    0     0   43 6720k      0   497k  0:00:30  0:00:13  0:00:17  470k
 46 15.0M    0     0   46 7168k      0   495k  0:00:30  0:00:14  0:00:16  470k
 50 15.0M    0     0   50 7680k      0   493k  0:00:31  0:00:15  0:00:16  469k
 52 15.0M    0     0   52 8128k      0   492k  0:00:31  0:00:16  0:00:15  470k
 55 15.0M    0     0   55 8576k      0   491k  0:00:31  0:00:17  0:00:14  469k
 59 15.0M    0     0   59 9088k      0   490k  0:00:31  0:00:18  0:00:13  469k
 62 15.0M    0     0   62 9536k      0   488k  0:00:31  0:00:19  0:00:12  469k
 65 15.0M    0     0   65 9984k      0   488k  0:00:31  0:00:20  0:00:11  469k
 68 15.0M    0     0   68 10.2M      0   487k  0:00:31  0:00:21  0:00:10  468k
 71 15.0M    0     0   71 10.6M      0   486k  0:00:31  0:00:22  0:00:09  468k
 74 15.0M    0     0   74 11.1M      0   485k  0:00:31  0:00:23  0:00:08  469k
 77 15.0M    0     0   77 11.6M      0   485k  0:00:31  0:00:24  0:00:07  470k
 80 15.0M    0     0   80 12.0M      0   484k  0:00:31  0:00:25  0:00:06  470k
 83 15.0M    0     0   83 12.5M      0   483k  0:00:31  0:00:26  0:00:05  469k
 86 15.0M    0     0   86 13.0M      0   483k  0:00:31  0:00:27  0:00:04  470k
 89 15.0M    0     0   89 13.4M      0   483k  0:00:31  0:00:28  0:00:03  470k
 92 15.0M    0     0   92 13.9M      0   482k  0:00:31  0:00:29  0:00:02  470k
 95 15.0M    0     0   95 14.3M      0   482k  0:00:31  0:00:30  0:00:01  469k
 98 15.0M    0     0   98 14.8M      0   481k  0:00:31  0:00:31 --:--:--  471k* We are completely uploaded and fine
{ [5 bytes data]

100 15.0M    0     0  100 15.0M      0   469k  0:00:32  0:00:32 --:--:--  394k* Mark bundle as not supporting multiuse
< HTTP/1.1 404 Not Found
< Server: nginx
< Date: Thu, 16 Jul 2020 02:26:04 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< Connection: close
< X-Powered-By: Nette Framework 3
< X-Frame-Options: SAMEORIGIN
< Set-Cookie: nette-samesite=1; path=/; HttpOnly; SameSite=Strict
< Set-Cookie: ULOSESSID=jqu8ppght5veu0uc9ci5ki6fqm; expires=Thu, 30-Jul-2020 02:26:04 GMT; Max-Age=1209600; path=/; domain=.uloz.to; secure; HttpOnly; SameSite=Lax
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate
< Pragma: no-cache
< Vary: X-Requested-With
< Set-Cookie: uloztoid=911336723; expires=Fri, 16-Jul-2021 02:26:04 GMT; Max-Age=31536000; path=/; domain=uloz.to; secure; SameSite=None
< X-Node-Name: ulozto4
< 
{ [7567 bytes data]

100 15.0M    0  7559  100 15.0M    224   455k  0:00:33  0:00:33 --:--:--  306k
100 15.0M    0  7559  100 15.0M    217   442k  0:00:34  0:00:34 --:--:--  212k
100 15.0M    0  7559  100 15.0M    211   429k  0:00:35  0:00:35 --:--:--  124k
100 15.0M    0  7559  100 15.0M    205   418k  0:00:36  0:00:36 --:--:-- 38756
100 15.0M    0  7559  100 15.0M    200   406k  0:00:37  0:00:37 --:--:--  1505
100 15.0M    0  7559  100 15.0M    195   396k  0:00:38  0:00:38 --:--:--     0
100 15.0M    0  7559  100 15.0M    190   386k  0:00:39  0:00:39 --:--:--     0
100 15.0M    0  7559  100 15.0M    185   376k  0:00:40  0:00:40 --:--:--     0
100 15.0M    0  7559  100 15.0M    181   367k  0:00:41  0:00:41 --:--:--     0
100 15.0M    0  7559  100 15.0M    176   359k  0:00:42  0:00:42 --:--:--     0
100 15.0M    0  7559  100 15.0M    172   350k  0:00:43  0:00:43 --:--:--     0
100 15.0M    0  7559  100 15.0M    168   343k  0:00:44  0:00:44 --:--:--     0
100 15.0M    0  7559  100 15.0M    165   335k  0:00:45  0:00:45 --:--:--     0
100 15.0M    0  7559  100 15.0M    161   328k  0:00:46  0:00:46 --:--:--     0
100 15.0M    0  7559  100 15.0M    158   321k  0:00:47  0:00:47 --:--:--     0
100 15.0M    0  7559  100 15.0M    154   314k  0:00:48  0:00:48 --:--:--     0
100 15.0M    0  7559  100 15.0M    151   308k  0:00:49  0:00:49 --:--:--     0
100 15.0M    0  7559  100 15.0M    148   302k  0:00:50  0:00:50 --:--:--     0
100 15.0M    0  7559  100 15.0M    145   296k  0:00:51  0:00:51 --:--:--     0
100 15.0M    0  7559  100 15.0M    143   290k  0:00:52  0:00:52 --:--:--     0
100 15.0M    0  7559  100 15.0M    140   285k  0:00:53  0:00:53 --:--:--     0
100 15.0M    0  7559  100 15.0M    137   280k  0:00:54  0:00:54 --:--:--     0
100 15.0M    0  7559  100 15.0M    135   275k  0:00:55  0:00:55 --:--:--     0
100 15.0M    0  7559  100 15.0M    133   270k  0:00:56  0:00:56 --:--:--     0
100 15.0M    0  7559  100 15.0M    130   265k  0:00:57  0:00:57 --:--:--     0
100 15.0M    0  7559  100 15.0M    128   261k  0:00:58  0:00:58 --:--:--     0
100 15.0M    0  7559  100 15.0M    126   256k  0:00:59  0:00:59 --:--:--     0
100 15.0M    0  7559  100 15.0M    124   252k  0:01:00  0:01:00 --:--:--     0
100 15.0M    0  7559  100 15.0M    122   248k  0:01:01  0:01:01 --:--:--     0
100 15.0M    0  7559  100 15.0M    120   244k  0:01:02  0:01:02 --:--:--     0
100 15.0M    0  7559  100 15.0M    118   240k  0:01:03  0:01:03 --:--:--     0
100 15.0M    0  7559  100 15.0M    116   236k  0:01:04  0:01:04 --:--:--     0
100 15.0M    0  7559  100 15.0M    114   233k  0:01:05  0:01:05 --:--:--     0
100 15.0M    0  7559  100 15.0M    113   229k  0:01:06  0:01:06 --:--:--     0
100 15.0M    0  7559  100 15.0M    111   226k  0:01:07  0:01:07 --:--:--     0
100 15.0M    0  7559  100 15.0M    109   223k  0:01:08  0:01:08 --:--:--     0
100 15.0M    0  7559  100 15.0M    108   219k  0:01:09  0:01:09 --:--:--     0
100 15.0M    0  7559  100 15.0M    106   216k  0:01:10  0:01:10 --:--:--     0
100 15.0M    0  7559  100 15.0M    105   213k  0:01:11  0:01:11 --:--:--     0
100 15.0M    0  7559  100 15.0M    103   210k  0:01:12  0:01:12 --:--:--     0
100 15.0M    0  7559  100 15.0M    102   207k  0:01:13  0:01:13 --:--:--     0
100 15.0M    0  7559  100 15.0M    100   205k  0:01:14  0:01:14 --:--:--     0
100 15.0M    0  7559  100 15.0M     99   202k  0:01:15  0:01:15 --:--:--     0
100 15.0M    0  7559  100 15.0M     98   199k  0:01:16  0:01:16 --:--:--     0
100 15.0M    0  7559  100 15.0M     97   197k  0:01:17  0:01:17 --:--:--     0
100 15.0M    0  7559  100 15.0M     95   194k  0:01:18  0:01:18 --:--:--     0
100 15.0M    0  7559  100 15.0M     94   192k  0:01:19  0:01:19 --:--:--     0
100 15.0M    0  7559  100 15.0M     93   189k  0:01:20  0:01:20 --:--:--     0
100 15.0M    0  7559  100 15.0M     92   187k  0:01:21  0:01:21 --:--:--     0
100 15.0M    0  7559  100 15.0M     91   185k  0:01:22  0:01:22 --:--:--     0
100 15.0M    0  7559  100 15.0M     90   183k  0:01:23  0:01:23 --:--:--     0
100 15.0M    0  7559  100 15.0M     89   180k  0:01:24  0:01:24 --:--:--     0
100 15.0M    0  7559  100 15.0M     87   178k  0:01:25  0:01:25 --:--:--     0
100 15.0M    0  7559  100 15.0M     86   176k  0:01:26  0:01:26 --:--:--     0
100 15.0M    0  7559  100 15.0M     85   174k  0:01:27  0:01:27 --:--:--     0
100 15.0M    0  7559  100 15.0M     85   172k  0:01:28  0:01:28 --:--:--     0
100 15.0M    0  7559  100 15.0M     84   170k  0:01:29  0:01:29 --:--:--     0
100 15.0M    0  7559  100 15.0M     83   168k  0:01:30  0:01:30 --:--:--     0
100 15.0M    0  7559  100 15.0M     82   167k  0:01:31  0:01:31 --:--:--     0* TLSv1.2 (IN), TLS alert, close notify (256):
{ [2 bytes data]

100 15.0M    0  7559  100 15.0M     81   165k  0:01:32  0:01:32 --:--:--     0* transfer closed with outstanding read data remaining

100 15.0M    0  7559  100 15.0M     81   165k  0:01:32  0:01:32 --:--:--     0
* Closing connection 0
} [5 bytes data]
* TLSv1.2 (OUT), TLS alert, close notify (256):
} [2 bytes data]
curl: (18) transfer closed with outstanding read data remaining

Trochu jsem gůglil jestli už to předemnou někdo neřešil a našel jsem tento skript na githubu. No ten bohužel taky nefunguje. Vyhodí to chybu

sed: -e expression #1, char 36: unknown option to `s'

Poraďte prosím něco.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Ruža Becelin avatar 16.7.2020 09:57 Ruža Becelin | skóre: 40 | blog: RuzaBecelinBlog
Rozbalit Rozbalit vše Re: curl upload na uložto
Odpovědět | | Sbalit | Link | Blokovat | Admin
Skript z Githubu selze na radku 11: tmp_sid=`uuidgen|sed 's/-//g'`

Zkontroluj si, jestli mas uuidgen a vraci ti UUID...
16.7.2020 11:18 jejda | skóre: 25 | blog: jejda
Rozbalit Rozbalit vše Re: curl upload na uložto
Jo uuidgen tam mám a vrací random řetězce jako například:
a546c6d4-400c-468b-80b9-acf64a75bcfe
6ec50ea8-0c89-4ab6-acd6-568a992832b7
137070d8-d103-4685-b9a0-4eb851ceecaf
A sed z toho odřezává ty pomlčky.

Když ten skript z githubu pustím s v ukecaném debug mode jako:

sh -x ulozto.sh /tmp/soubor
tak to spíš vypadá že chcípne proto, že je proměnná user_id= prázdná.

Řešení 1× (Bherzet)
Jendа avatar 17.7.2020 18:34 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: curl upload na uložto
tak se sice soubor někam fyzicky odešle ale když si potom u sebe otevřu web browser a lognu na uloz.to, tak ho nikde v tom jejich webovém průzkumníkovi nevidím
Ano, protože stránka s uploadem téměř určitě nebude https://uloz.to/, ale něco složitějšího (https://uloz.to/foo/bar/upload/bleble), a taky se na dnešním webu téměř nepoužívá HTTP autentizace (curl --user), ale formulář, který ti dá cookie.
tak to spíš vypadá že chcípne proto, že je proměnná user_id= prázdná
No tak to budeš muset ladit. Pro začátek: co vrátí ten wget? Co vrátí ten grep? Určitě od roku 2014 změnili frontnend a userid nepůjde získat přesně takhle. Letmým pohledem mi přijde, že změnili i přihlašovací formulář, takže nejspíš neprojde ani to přihlášení před tím. Budeš to muset opravit - pomůcky: Burp Suite (bohatě stačí community verze zadarmo), element inspector tvého prohlížeče.
18.7.2020 05:06 jejda | skóre: 25 | blog: jejda
Rozbalit Rozbalit vše Re: curl upload na uložto
Maličko jsem pokročil, podařilo se mi aspoň lognout.
#!/bin/sh

username=lppjaclcukbm
password=vfdzt6o7tuq6

# falešný user agent, aby server nepanikařil že máme zastaralý browser.
ua="Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0"

cookie=$(mktemp)
file="$1"

# první se stáhne prázdná login stránka a uloží se cookie.
curl -v -A "$ua" -c $cookie https://uloz.to/login 1>/dev/null

sleep 2
# teď se stránka jakoby vyplní a pošle se zpátky.
curl -v -A "$ua" -X POST -b $cookie -F username=$username -F password=$password -L https://uloz.to/login?do=loginComponent-loginForm-form-submit 1>/tmp/ut-login-test.html

# stáhne se stránka na upload souboru.
curl -v -A "$ua" -b $cookie https://uloz.to/sem 1>/tmp/ut-sem.html

# až posem to funguje.

sleep 1

# dál je asi potřeba pro ten soubor vygenerovat nějaký token
# no vrací to json s hodnotama null.
curl -v -A "$ua" -b $cookie -H 'Referer: https://uloz.to/sem' https://uloz.to/p-api/get-api-current-user-token 1>/tmp/ut-token.json

Celý ten proces, login a upload souboru v prohlížeči jsem nahrál pomocí mitmproxy aby bylo vidět jak to přesně probíhá. Kompletní dump sem nejde vložit jako příloha protože to má víc jak 5MB :-( tak je na ulozto.

Přiznám se ale že je to na mě moc složité. Tahá si to bambilión javaskriptů a obrázků. No kdyby se někomu chtělo mi s tím pomoct, čte se to příkazem:
mitmproxy -nr ulozto.dump
Gréta avatar 22.7.2020 13:38 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: curl upload na uložto
Odpovědět | | Sbalit | Link | Blokovat | Admin

nějakej progress?? co jakoby použít selenium třeba a neřešit tyhlety všecky věci ručně?? :O :O

Zelená energetická soustava založená na obnovitelnejch zdrojích energie versus realnej svět 🤡🇪🇸

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.