[FFmpeg-trac] #6976(ffmpeg:new): ffmpeg ignores user-agent http header

FFmpeg trac at avcodec.org
Mon Jan 22 17:06:24 EET 2018

#6976: ffmpeg ignores user-agent http header
             Reporter:  Moipeg  |                     Type:  defect
               Status:  new     |                 Priority:  normal
            Component:  ffmpeg  |                  Version:  git-master
             Keywords:          |               Blocked By:
             Blocking:          |  Reproduced by developer:  0
Analyzed by developer:  0       |
 Summary of the bug:
 How to reproduce: read http stream restricted by user agent
 % fmpeg -loglevel debug  -i http://cdnamd-hls-
 -user_agent 'Safari' -user-agent 'Safari' -headers 'User-Agent: Safari'
 -vn -t 60 out.mp3

 ffmpeg version N-89871-g388a0f7 Copyright (c) 2000-2018 the FFmpeg
   built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.5) 20160609
   configuration: --prefix=/home/aa --enable-avresample --enable-ffplay
 --enable-fontconfig --enable-frei0r --enable-gpl --enable-libass --enable-
 libcdio --enable-libfontconfig --enable-libfreetype --enable-libmp3lame
 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopencv
 --enable-libpulse --enable-librtmp --enable-libspeex --enable-libtheora
 --enable-libtwolame --enable-libv4l2 --enable-libvo-amrwbenc --enable-
 libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-
 nonfree --enable-opengl --enable-static --enable-version3 --enable-libssh
 --enable-openssl --enable-opencl --enable-libfdk-aac --enable-libbs2b
 --enable-libcaca --enable-libfribidi --enable-libgme --enable-libmodplug
 --enable-libopenjpeg --enable-libopus --enable-libsoxr --enable-libwavpack
 --enable-libwebp --enable-libzmq --enable-libzvbi --enable-openal
   libavutil      56.  7.100 / 56.  7.100
   libavcodec     58.  9.100 / 58.  9.100
   libavformat    58.  5.100 / 58.  5.100
   libavdevice    58.  0.101 / 58.  0.101
   libavfilter     7. 11.101 /  7. 11.101
   libavresample   4.  0.  0 /  4.  0.  0
   libswscale      5.  0.101 /  5.  0.101
   libswresample   3.  0.101 /  3.  0.101
   libpostproc    55.  0.100 / 55.  0.100
 Splitting the commandline.
 Reading option '-i' ... matched as input url with argument 'http://cdnamd-
 Reading option '-loglevel' ... matched as option 'loglevel' (set logging
 level) with argument 'debug'.
 Finished splitting the commandline.
 Parsing a group of options: global .
 Applying option loglevel (set logging level) with argument debug.
 Successfully parsed a group of options.
 Parsing a group of options: input url http://cdnamd-hls-
 Successfully parsed a group of options.
 Opening an input file: http://cdnamd-hls-
 [NULL @ 0x3f82840] Opening 'http://cdnamd-hls-
 for reading
 [http @ 0x3f83280] Setting default whitelist
 [http @ 0x3f83280] request: GET
 video=100000-audio_AACL_qad_130400_110=130400.m3u8 HTTP/1.1
 User-Agent: Lavf/58.3.100
 Accept: */*
 Range: bytes=0-
 Connection: close
 Host: cdnamd-hls-globecast.akamaized.net
 Icy-MetaData: 1

 [http @ 0x3f83280] HTTP error 403 Forbidden
 Server returned 403 Forbidden (access denied)

 ffmpeg version N-89871-g388a0f7
 Built on 2018-01-22

 As you can see, I used all the three possible ways to pass a  user agent
 string, and made the string artificially simple to avoid any mishaps.
 Using each one of these ways alone yields the same results.
 The user-agent in the debug output is always Lavf.

 I am useless as a C developer. The only workaround I could figure out is
 to hardcode the user-agent value in the file http.c and change line 132



 Luckily the server I am connecting to doesn't do any serious sanity checks
 on the user agent's name and version.

 This worked. But, (i) it's a stupid solution, and (ii) the next git pull
 will overwrite the hardcoded user-agent value.

 Thank you for addressing this.

 Patches should be submitted to the ffmpeg-devel mailing list and not this
 bug tracker.

Ticket URL: <https://trac.ffmpeg.org/ticket/6976>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker

More information about the FFmpeg-trac mailing list