The Blacklist - follow-up
Don't use a for loop to iterate over program output. See http://mywiki.wooledge.org/BashFAQ/001
Try this -- extract the keys, urls, rules all at once:
jq -r 'keys[] as $k | [$k, .[$k].url, .[$k].rule] | @tsv' &quot;$sources&quot; |
while IFS=$'\t' read key url rule; do 
    case $key in 
       ...

If, for some reason, your shell does not understand $'\t', use
while IFS=&quot;$(printf '\t')&quot; read ...