
Александр
17.10.2018
21:20:18
зверюга вообще
https://twitter.com/shinh/status/1021437706935590914
тут в твите ссылка на решение
суровый тип, в гугле работал

Google

Александр
17.10.2018
21:22:02
и клал он на все эти разговоры
прототип решения на рубях наклепал

Artur
17.10.2018
21:24:19

Eugene
17.10.2018
21:28:53
Новая версия сафарари.

Александр
17.10.2018
21:35:05
а что там с сафари?
есть issue?

Eugene
17.10.2018
21:40:31
https://www.engadget.com/2018/06/05/apple-safari-canvas-fingerprinting/
есть issue?
Короче у знакомого задача поддержка интернет магазина в сша, и чуваки пишут скрипты и отлавливать их по fingerprints невозможно если они юзают сафари.

Александр
17.10.2018
21:50:48
хммм, почитал, ну это не проблема с JWT
это помогает за пользователями следить жеж и всё
ааа, уяснил с ботами так борятся

Eugene
17.10.2018
21:52:22

Google

Александр
17.10.2018
21:52:43
нет, это токен типо encrypted cookie рельсовой
то есть тупо кусок данных закодированный

Eugene
17.10.2018
21:53:01
Ну вот.

Александр
17.10.2018
21:53:11
и его используют чтобы пользователя идентифицировать

Eugene
17.10.2018
21:53:16
Его просто копируют и вставляют в куку.

Александр
17.10.2018
21:53:19
а хранить его где угодно можно
ну можно и в куке в том числе

Eugene
17.10.2018
21:55:05
Короче. Ты заходишь один раз. Копируешь куку. И потом чтобы не логинишься подтягиваешься куку, опля ты авторизован. Остается фингер принт. Заходит какой то хедлесс хром с убунты 100 раз и нормальный чувак с таким же токеном например с винды такой то разрядности и версией оперы определенной.
И по этому ты определяешь банить его или нет.
Берешь хедлесс сафари и все.
Ты хуй поймешь машина это или нет.
До того как не поставишь рекапчу. Но рекапча не срабатывает если ты подтягиваешь после первого раза куку и больше не трогаешь форму логина и пароля для авторизации.


Amir
18.10.2018
02:14:11
Ребята помогите
Что-то не могу понять
у меня в контроллере есть
before_action :set_plea, only: %i[show update edit]
и свои методы экшены
def upload
def blank
Роуты
post 'tp/upload', to: 'tp#upload'
get 'tp/lbank', to: 'tp#blank'
resources :tp, only: %i[new show create edit]
не могу понять когда вызываю в браузере
/blank
у меня там контроллере запускается мтеод set_plea, а ведь он должен только в методах %i[show update edit] запуститься
а все понял, апичатка была :) LBANK :D

Vasiliy
18.10.2018
04:47:59
и я не думаю что фингерпринт нельзя обойти, всё что засылает браузер в любом случае можно подменить

Nikita
18.10.2018
07:37:50
ребята, подскажите пожалуйста, есть приложение, оно висит на: domain.example/foo, то есть это рутовая точка, рельса пытается грузить ассеты из domain.example, а должна грузить из domain.example/foo, что-то не могу подходящее нагуглить, как рельсе сказать рутовую точку для отгрузки ассетов?

Vasiliy
18.10.2018
07:39:21
Как быстрое решение - посмотреть как работает ассет паф, как более замороченное - настроить в нгинксе
Или в конфиге это где то было

Nikita
18.10.2018
07:40:12
config.action_controller.asset_host я еще вот такую штуку нашел

Google

Nikita
18.10.2018
07:40:15
походу это то, что нужно?

Артур
18.10.2018
07:40:18
да

Nikita
18.10.2018
07:40:31
ок, щас затестим

Vasiliy
18.10.2018
07:40:54
Возможно, я сходу не вспомню

Artur
18.10.2018
07:42:26

Nikita
18.10.2018
07:42:40
попробуем и то, и то

Artur
18.10.2018
07:43:12
:))

Nikita
18.10.2018
07:43:31
как через nginx сделать понятно

Vasiliy
18.10.2018
07:43:42
Рерайтить нгинксом кстати ок варик, на поддомен выносишь а потом туда можно и какой нить клоудфронт

Darth
18.10.2018
07:43:43
self.instance_variable_get("@#{attribute}")
def [](attribute)
self.send(attribute)
endВоот
А есть какое-то другое решение, чтобы можно было вызывать только атрибуты? (Сейчас можно имя любого метода вызвать)

Darth
18.10.2018
07:43:43
какой-то способ сделать @attribute_name

Amir
18.10.2018
07:50:06
Ребята ПОМОГИТЕ
Как обновить атрибуты не валидируя
скажем пришла форма action UPDATE
@mymodel = Mymodel.find(params[:id])
@mymodel.update(mymodel_params)
как это делает @mymodel.save(validate: false)

Rustam
18.10.2018
07:52:05
update через save работает
File activerecord/lib/active_record/base.rb, line 2665
def update_attributes(attributes)
self.attributes = attributes
save
end

Vasiliy
18.10.2018
07:53:08
Update_columns есть посмотри в доке, там описаны методы которые Валидируют при сохранении и которые нет

Artem
18.10.2018
07:54:19
http://www.davidverhasselt.com/set-attributes-in-activerecord/

Александр
18.10.2018
08:04:25
ну и вообще по количеству обращений к определённым ресурсам (поведение) можно выявлять, но это уже геморройно реализуемо
https://antoinevastel.com/bot%20detection/2017/08/05/detect-chrome-headless.html

Google

Александр
18.10.2018
08:07:22
в общем все эти беспрободные браузеры и фреймворки для тестирования (которые используют для парсинга) определяются без проблем

Darth
18.10.2018
08:08:19

Александр
18.10.2018
08:08:48
ок, дай пример

Darth
18.10.2018
08:08:52
работаю в компании, которая промышляет скринскрэпингом, испульзуя ватир и прочие приблуды для этого
всё обходится

Александр
18.10.2018
08:09:46
конечно те кто парсят всё обойдут рано или поздно, НО сколько сил и времени они потратят?
опять же при парсинге больше данных надо, поэтому по количеству запросов они однозначно палятся

Darth
18.10.2018
08:10:23
ну зависит от мотивации )

Nikita
18.10.2018
08:11:47

Admin
ERROR: S client not available

Nikita
18.10.2018
08:11:53
по дефолту /
передаешь /foo

Darth
18.10.2018
08:11:56
очень хорошая защита от них это динамические айди и классы на html

Nikita
18.10.2018
08:11:59
и норм

Александр
18.10.2018
08:12:10
ватир через селениум работает
селениум палиться легко

Darth
18.10.2018
08:13:57
это слова

Александр
18.10.2018
08:14:23
http://edmundmartin.com/detecting-selenium/

Darth
18.10.2018
08:14:26
но пока ребята вроде ни с одним банком не имели проблем

Александр
18.10.2018
08:14:41
дык, может против них и не защищаются особо? =)
тут человек спросил как защищаться

Google

Александр
18.10.2018
08:20:20
если есть желание - можем поупражняться в определении селениумов и защите от них на практике

Amir
18.10.2018
08:20:56

Darth
18.10.2018
08:22:10

Александр
18.10.2018
08:23:01
100% защиты не может быть, иначе пострадают пользователи
обычно делают достаточно сложную защиту, чтобы новички и обычные люди не долбились
а умных отсекают, если они начинают вредить (ресурсы жрать как минимум или данные грести которые им не нужно отдавать)
вот ещё есть интересные статьи
https://intoli.com/blog/making-chrome-headless-undetectable/
https://intoli.com/blog/not-possible-to-block-chrome-headless/
но тут тоже не всё учтено
браузеры отправляют заголовки разные
в разном порядке (!)
так что для усложнения парсинга есть много возможностей
я, кстати, в последний раз на паре сайтов защиту обошёл от парсинга (cloudflare точно проходит) тупо выставив useragent Googlebot-Image/1.0

Darth
18.10.2018
08:35:46
ну тем неменее пока ребята все банки что нужно было (почти всё, что есть в мире) осилили и постоянно обновляют
разница только в сложности
но работа у них скучная и я рад, что этим не занимаюсь :)

Александр
18.10.2018
08:37:39
так что для атаки тоже есть интересные направления

Andiskiy
18.10.2018
08:39:18
добрый день. подскажите пожалуйста, в чем разница использования -> и lambda в скоупах? просто рубокоп просит юзать лямбду, если несколько строк. Было место где я юзал лямбду
scope :name_scope, lambda do |params|
#....some code
endно в этом месте происходила утечка памяти. поэтому боюсь использовать лямбду. подскажите пожалуйста, может я чего-то не допонимаю.

Darth
18.10.2018
08:40:02
``delegate :[], :as_json, to: :data````as_json понятно, а как [] будет вызываться на инстансе класса у которого есть такой делегат?
-> и lambda вроде просто разный синтаксис
как с ключами в хешах

Vasiliy
18.10.2018
08:49:19