Is there a way to limit the number of document views of an IP address in a day? I have a website which has many documents, and I am using sharepoint to share them for free. However, they are very valuable and many people are trying to download them all. I want a solution that limits this. Thanks in advance.
There is no way to prevent users from downloading documents if you still want them to be able to view the documents. The best you can do is keep them from editing and re-uploading the documents back to the original library. That's what making them Read Only does. IRM(Information Rights Management) is then used to control what the user can do with the document once they've downloaded it. You can use IRM to keep them from passing a copy of the document on to someone else, editing it, printing it, etc. But since the document is viewed on the client you can't keep them from downloading it.
Apply Information Rights Management to a list or library:
You would need to implement a fairly complex custom solution to get this to work. I'm not sure of specifics as I've never attempted it, but it could work like this:
Develop and deploy a farm solution (or any other type of solution) that only makes the documents accessible via a custom web part. I'm assuming as you're hosting on a public web server downloads are anonymous with no login (and your web app settings reflect this), so just code the web part in such a way that a single service account is accessing the library and showing the documents for the anonymous user (again, I'm not experienced enough with custom web parts to know if this is possible or not).
Every time a document is accessed via the custom web part you can have an entry created in a SharePoint list using an event receiver (again, not accessible by anonymous users) that logs the file accessed and by what IP.
Your first custom web part would therefore, in response to a document being accessed, check this list to see if the source IP has already exceeded it's limit for a given date period.
Obviously this would be very easy to get round by just using a proxy server and changing the IP.
What you should probably consider is not using SharePoint at all as a dedicated web server package may have these features (as far as I can tell IIS doesn't, it just has an extension for DDoS protection).
Here, there is no straight way to implement this. Let's say you don't want user to download, then you may create custom permission level without downloading option for external users. And if you want to track who, where and what type of file is downloading for this you need to implement the event handler.... I assumed this is for SharePoint on-premise version.