[ 
https://issues.apache.org/jira/browse/NUTCH-1941?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14381679#comment-14381679
 ] 

Sebastian Nagel commented on NUTCH-1941:
----------------------------------------

Solution 2 is simpler because it does not save any state. If there is no good 
argument in favor of solution 1, I would opt for solution 2 because of 
simplicity and statelessness. There a multiple ways to make solution 1 
thread-safe: synchronization, volatile variables, atomic integers, ...
Are there arguments against solution 2:
- "won't it be too predictable": the agent name is chosen randomly. It's 
predictable if you now the pseudo-random generator and it's seed. But there are 
many other things easier to detect, esp. the access within fixed intervals 
(fetcher.server.delay).
- "have to rotate the agent every time": it's not strictly speaking a 
"rotation", just random selection of one agent name.

> Optional rolling http.agent.name's
> ----------------------------------
>
>                 Key: NUTCH-1941
>                 URL: https://issues.apache.org/jira/browse/NUTCH-1941
>             Project: Nutch
>          Issue Type: New Feature
>          Components: fetcher, protocol
>            Reporter: Lewis John McGibbney
>            Priority: Trivial
>         Attachments: NUTCH-1941-ITR2.patch, NUTCH-1941-itr3.patch, 
> NUTCH-1941-ver1.patch, agent.names.txt, nutch.patch
>
>
> In some scenarios, even whilst adhering to fetcher.crawl.delay, web admins 
> can block your fetcher based merely on your crawler name. 
> I propose the ability to implement rolling http.agent.name's which could be 
> substituted every 5 seconds for example. This would mean that successive 
> requests to the same domain would be sent with different http.agent.name. 
> This behavior should be off by default.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to