ScudLee / anime-lists

147 stars 104 forks source link

Add useragent string to curl #283

Closed slohj closed 5 years ago

slohj commented 5 years ago

Anidb recently changed policy on the animetitles.xml access and requires that the requesting project is announced in the useragent string.

slohj commented 5 years ago

I am adding this as pull request because I would like some feed back on the useragent string.

I used the repository name "Scudlee/anime-lists" but anything that identifies the "project" can be used. I have tested with 3 different strings and anything will work, but the useragent string must be set to something or anidb will refuse the connection.

I'll wait for a few days for comments before merging this myself.

purposelycryptic commented 5 years ago

HAMA ran into the same issue, it sounds like the useragent requirement was added due to AniDB getting flooded with requests, and the useragent string acting as a good identifier for what needed banning? I forget the exact details, because it was a few months ago.

slohj commented 5 years ago

Thanks for the link.

I got bit by it last week so I was just doing a slightly manual update since then by downloading the xml from my browser and letting an edited update.sh do the rest.

The only info I had found is this short anidb forum thread: https://anidb.net/perl-bin/animedb.pl?show=cmt&id=90537

After reading deridiot's comments I wonder if the string should be dynamic to indicate the actual end user and project such as "${USER}/Scudlee/anime-lists". I will post this question to anidb IRC and the forum.

purposelycryptic commented 5 years ago

AFAIK, AniDB clients all have a static useragent string (or one with a version number) - that way the mods/admins can initiate measures against the client as a whole, if a new version happens to, say, have a bug that causes it to send rapid-fire, DDoS-style requests to AniDB. If each user's client had it's own useragent string, in that scenario, they wouldn't be able to use a static client ban to in defense, which could be problematic.