Я не знаю, почему ты это сдерживаешь. Клиент предлагает данные.
Предположительно, они создают ценность каким-то уникальным способом, который нетривиально отражается в данных.
В любом случае.
Вы можете проверить браузер, разрешение экрана и IP-адрес, чтобы узнать, не является ли это каким-то автоматическим скребком.
Большинство вещей, таких как cURL и wget - если их тщательно не настроить - явно не браузеры.
Я не знаю, как это делает C #, но чтобы реализовать это на Java, вам придется приблизительно это сделать. Посмотрите, как этот код делает это:
public String[] split(String text) {
if (text == null) {
text = "";
}
int last_match = 0;
LinkedList<String> splitted = new LinkedList<String>();
Matcher m = this.pattern.matcher(text);
// Iterate trough each match
while (m.find()) {
// Text since last match
splitted.add(text.substring(last_match,m.start()));
// The delimiter itself
if (this.keep_delimiters) {
splitted.add(m.group());
}
last_match = m.end();
}
// Trailing text
splitted.add(text.substring(last_match));
return splitted.toArray(new String[splitted.size()]);
}
Это потому, что вы захватываете разделенный токен. C # воспринимает это как намек на то, что вы хотите сохранить сам токен как член результирующего массива. Java не поддерживает это.