Веб-скрепинг с помощью PHP: Пошаговое руководство
Веб-скрепинг становится все более популярным и в настоящее время является одной из актуальных тем в ИТ-сообществе. В результате появилось несколько библиотек, позволяющих собирать данные с веб-сайтов. Здесь вы узнаете, как создать веб-скрепер на PHP, используя одну из самых популярных библиотек для веб-скрепинга.
В этом уроке вы узнаете об основах веб-скрейпинга на PHP. Затем вы узнаете, как обойти наиболее популярные системы защиты от скрапинга, а также познакомитесь с более продвинутыми техниками и концепциями, такими как параллельный скрапинг и безголовые браузеры.
👉 @php_lib
Веб-скрепинг становится все более популярным и в настоящее время является одной из актуальных тем в ИТ-сообществе. В результате появилось несколько библиотек, позволяющих собирать данные с веб-сайтов. Здесь вы узнаете, как создать веб-скрепер на PHP, используя одну из самых популярных библиотек для веб-скрепинга.
В этом уроке вы узнаете об основах веб-скрейпинга на PHP. Затем вы узнаете, как обойти наиболее популярные системы защиты от скрапинга, а также познакомитесь с более продвинутыми техниками и концепциями, такими как параллельный скрапинг и безголовые браузеры.
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, "https://www.w3schools.com/jquery/demo_test_post.asp");
// specify that the cURL request is a POST
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// define the body of the request
curl_setopt($curl, CURLOPT_POSTFIELDS,
// http_build_query is required to simulate
// a FormData request. Ignore it on a JSON request
http_build_query(
array(
"name" => "Donald Duck",
"city" => "Duckburg"
)
)
);
// define the body of the request
curl_setopt($curl, CURLOPT_POSTFIELDS,
array(
"name" => "Donald Duck",
"city" => "Duckburg"
)
);
// replicate the AJAX call
$result = curl_exec($curl);
https://www.zenrows.com/blog/web-scraping-php👉 @php_lib
👍3
Неортодоксальный Eloquent. Часть 1
Eloquent - это мощный и умный инструмент, нравящийся многим своими возможностями. Он позволяет с лёгкостью выполнять операции с базами данных, сохраняя при этом простоту использования. Реализуя паттерн Active Record (AR), описанный Фаулером в книге "PoEAA", является одним из лучших реализаций на сегодняшний день.
В этой статье я хотел бы рассказать о нескольких советах и рекомендациях, о которых узнал экспериментальным путём. Например, Вы когда-нибудь задумывались о том, чтобы тем или иным образом разделить жадные загрузки? Нет? Тогда, я уверен, Вы узнаете как минимум что-то новое, так что обязательно дочитайте до конца!
https://habr.com/ru/articles/762598/
👉 @php_lib
Eloquent - это мощный и умный инструмент, нравящийся многим своими возможностями. Он позволяет с лёгкостью выполнять операции с базами данных, сохраняя при этом простоту использования. Реализуя паттерн Active Record (AR), описанный Фаулером в книге "PoEAA", является одним из лучших реализаций на сегодняшний день.
В этой статье я хотел бы рассказать о нескольких советах и рекомендациях, о которых узнал экспериментальным путём. Например, Вы когда-нибудь задумывались о том, чтобы тем или иным образом разделить жадные загрузки? Нет? Тогда, я уверен, Вы узнаете как минимум что-то новое, так что обязательно дочитайте до конца!
https://habr.com/ru/articles/762598/
👉 @php_lib
Хабр
Неортодоксальный Eloquent. Часть 1
Eloquent - это мощный и умный инструмент, нравящийся многим своими возможностями. Он позволяет с лёгкостью выполнять операции с базами данных, сохраняя при этом простоту использования. Реализуя...
👍3
Неортодоксальный Eloquent. Часть 2
Это краткая, но незаменимая (для меня, по крайней мере) глава. В какой-то момент Вы, вероятно, задались вопросом как можно разгрузить жадные загрузки, особенно те, которые выполняют дополнительную загрузку данных, но, тем не менее, в итоге просто копируете участки кода. Хотя копипаст вполне приемлемый вариант, на самом деле существуют более эффективные способы решения этой проблемы. Повторение подобных операций может быстро стать громоздким из-за применения дополнительных условий запроса. Это может произойти, например, при использовании фантасмагорического проекта laravel-medialibrary от Spatie.
https://habr.com/ru/articles/762690/
👉 @php_lib
Это краткая, но незаменимая (для меня, по крайней мере) глава. В какой-то момент Вы, вероятно, задались вопросом как можно разгрузить жадные загрузки, особенно те, которые выполняют дополнительную загрузку данных, но, тем не менее, в итоге просто копируете участки кода. Хотя копипаст вполне приемлемый вариант, на самом деле существуют более эффективные способы решения этой проблемы. Повторение подобных операций может быстро стать громоздким из-за применения дополнительных условий запроса. Это может произойти, например, при использовании фантасмагорического проекта laravel-medialibrary от Spatie.
https://habr.com/ru/articles/762690/
👉 @php_lib
Хабр
Неортодоксальный Eloquent. Часть 2
Если Вы ещё не читали первую часть , самое время это сделать. Итак, продолжаем! Оптимизация ленивой загрузки Это краткая, но незаменимая (для меня, по крайней мере) глава. В какой-то момент Вы,...
👍5
Пакет Pail
Погружение в лог-файлы приложения Laravel непосредственно из консоли. 🪣
https://github.com/nunomaduro/pail
👉 @php_lib
Погружение в лог-файлы приложения Laravel непосредственно из консоли. 🪣
https://github.com/nunomaduro/pail
👉 @php_lib
👍2
PHP-SPX простой профайлер трейсер для PHP
Работая с различными PHP проектами часто приходится дебажить приложение чтобы найти и исправить ошибку. Во многих случаях вполне хватает xDebug, однако он не подходит для всех задач. Иногда нужно понять почему та или иная страница долго загружается, что съедает так много памяти или просто как работает большой и запутанный код.
https://habr.com/ru/articles/505192/
👉 @php_lib
Работая с различными PHP проектами часто приходится дебажить приложение чтобы найти и исправить ошибку. Во многих случаях вполне хватает xDebug, однако он не подходит для всех задач. Иногда нужно понять почему та или иная страница долго загружается, что съедает так много памяти или просто как работает большой и запутанный код.
https://habr.com/ru/articles/505192/
👉 @php_lib
👍2
Обзор NativePHP. Инструмент для создания собственных нативных desktop приложений на Laravel
В этой статье я сделаю обзор NativePHP, который появился на Laracon US 2023. Видеообзор, который я сделал, вызвал большой интерес у аудитории, и я решил оформить статью про NativePHP, для тех кто любит читать.
https://habr.com/ru/articles/761740/
👉 @php_lib
В этой статье я сделаю обзор NativePHP, который появился на Laracon US 2023. Видеообзор, который я сделал, вызвал большой интерес у аудитории, и я решил оформить статью про NativePHP, для тех кто любит читать.
https://habr.com/ru/articles/761740/
👉 @php_lib
👍4
Простая аутентификация на PHP
Многие новички до сих пор попадают в тупик при написании простейшей аутентификации в PHP. На Тостере с завидной регулярностью попадаются вопросы о том, как сравнить сохраненный пароль с паролем полученным из формы логина. Здесь будет краткая статья-туториал на эту тему.
Disclaimer: статья рассчитана на совершенных новичков. Умудрённые опытом разработчики ничего нового здесь не найдут, но могут указать на возможные недочёты =).
Для написания системы аутентификации будем использовать базу данных MySQL/MariaDB, PHP, PDO, функции для работы с паролями, для построения интерфейса возьмём bootstrap.
Полный код примера доступен на гитхабе: ссылка на Github.
👉 @php_lib
Многие новички до сих пор попадают в тупик при написании простейшей аутентификации в PHP. На Тостере с завидной регулярностью попадаются вопросы о том, как сравнить сохраненный пароль с паролем полученным из формы логина. Здесь будет краткая статья-туториал на эту тему.
Disclaimer: статья рассчитана на совершенных новичков. Умудрённые опытом разработчики ничего нового здесь не найдут, но могут указать на возможные недочёты =).
Для написания системы аутентификации будем использовать базу данных MySQL/MariaDB, PHP, PDO, функции для работы с паролями, для построения интерфейса возьмём bootstrap.
Полный код примера доступен на гитхабе: ссылка на Github.
👉 @php_lib
Хабр
Простая аутентификация на PHP
Многие новички до сих пор попадают в тупик при написании простейшей аутентификации в PHP. На Тостере с завидной регулярностью попадаются вопросы о том, как сравнить сохраненный пароль с паролем...
👍6
Разблокировка Real-Time с помощью WebSockets в Laravel с помощью Soketi
Представьте себе создание веб-приложений, которые реагируют мгновенно, где обновление данных и взаимодействие происходят в мгновение ока. Добро пожаловать в мир веб-разработки в реальном времени. В этой статье мы попытаемся создать простой пример использования соединения WebSocket в приложении Laravel с помощью Soketi.
Мы познакомимся с Soketi, установим необходимые инструменты и настроим Laravel для работы с WebSockets. К концу статьи у вас будет готова базовая система WebSocket.
https://fajarwz.com/blog/unlocking-real-time-with-websockets-in-laravel-with-soketi/
👉 @php_lib
Представьте себе создание веб-приложений, которые реагируют мгновенно, где обновление данных и взаимодействие происходят в мгновение ока. Добро пожаловать в мир веб-разработки в реальном времени. В этой статье мы попытаемся создать простой пример использования соединения WebSocket в приложении Laravel с помощью Soketi.
Мы познакомимся с Soketi, установим необходимые инструменты и настроим Laravel для работы с WebSockets. К концу статьи у вас будет готова базовая система WebSocket.
https://fajarwz.com/blog/unlocking-real-time-with-websockets-in-laravel-with-soketi/
👉 @php_lib
👍4
3 года работы с AWS Lambda в режиме lift-and-shift
Давайте определимся с ситуацией. Мы ищем возможность масштабирования PHP-приложения. Погуглив, мы выяснили, что наиболее масштабируемым сервисом является AWS Lambda. Он не поддерживает PHP нативно, но у нас есть https://bref.sh. Кроме того, у нас есть книга Serverless Visually Explained, в которой рассказывается о том, что нужно знать, чтобы запустить PHP на AWS Lambda. Но у нас есть проект 8-летней давности, который не был разработан с нуля как бессерверный. Это не наследие. Не совсем. Он хорошо работает, имеет приличное тестовое покрытие, над ним работает горстка инженеров, и пока что он успешен. Просто она не была рассчитана на горизонтальное масштабирование. Что теперь?
https://blog.deleu.dev/lift-and-shift-aws-lambda/
👉 @php_lib
Давайте определимся с ситуацией. Мы ищем возможность масштабирования PHP-приложения. Погуглив, мы выяснили, что наиболее масштабируемым сервисом является AWS Lambda. Он не поддерживает PHP нативно, но у нас есть https://bref.sh. Кроме того, у нас есть книга Serverless Visually Explained, в которой рассказывается о том, что нужно знать, чтобы запустить PHP на AWS Lambda. Но у нас есть проект 8-летней давности, который не был разработан с нуля как бессерверный. Это не наследие. Не совсем. Он хорошо работает, имеет приличное тестовое покрытие, над ним работает горстка инженеров, и пока что он успешен. Просто она не была рассчитана на горизонтальное масштабирование. Что теперь?
https://blog.deleu.dev/lift-and-shift-aws-lambda/
👉 @php_lib
Bref
Bref – Simple and scalable PHP with serverless
Bref is a framework to write and deploy serverless PHP applications on AWS Lambda.
👍2
Совет по безопасности: увеличьте количество раундов bcrypt
Приветствую вас, друзья! На этой неделе мы отправимся в интересный и сложный мир, исследуя хэширование паролей, и рассмотрим очень простое изменение, которое вы должны сделать в своих приложениях для повышения безопасности, основываясь на двух PR, которые я недавно отправил в Laravel. Если возникнет интерес, я могу углубиться в тему хэширования в одной из следующих статей, а пока мы просто рассмотрим основы.
https://securinglaravel.com/p/security-tip-increase-your-bcrypt
👉 @php_lib
Приветствую вас, друзья! На этой неделе мы отправимся в интересный и сложный мир, исследуя хэширование паролей, и рассмотрим очень простое изменение, которое вы должны сделать в своих приложениях для повышения безопасности, основываясь на двух PR, которые я недавно отправил в Laravel. Если возникнет интерес, я могу углубиться в тему хэширования в одной из следующих статей, а пока мы просто рассмотрим основы.
https://securinglaravel.com/p/security-tip-increase-your-bcrypt
👉 @php_lib
Securing Laravel
Security Tip: Increase Your bcrypt Rounds
[Tip#58] It's time to upgrade your bcrypt rounds to 12 (or higher)!
👍4
Генерация аватаров с инициалами на PHP
Для мобильного приложения я занимаюсь фронтенд-разработкой, и дизайн включает в себя множество аватаров. К сожалению, у нас нет аватаров наших пользователей. К счастью, у нас есть их имена, и я узнал из Outlook и Trello, что можно сделать отличные аватары с инициалами пользователя. В этом посте я покажу, как это сделать с помощью PHP.
https://tqdev.com/2022-generate-avatars-initials-php
👉 @php_lib
Для мобильного приложения я занимаюсь фронтенд-разработкой, и дизайн включает в себя множество аватаров. К сожалению, у нас нет аватаров наших пользователей. К счастью, у нас есть их имена, и я узнал из Outlook и Trello, что можно сделать отличные аватары с инициалами пользователя. В этом посте я покажу, как это сделать с помощью PHP.
https://tqdev.com/2022-generate-avatars-initials-php
👉 @php_lib
👍4
🔥 Совет по Laravel: wherePivot.
В отношениях "многие-ко-многим" можно добавить операторы
👉 @php_lib
В отношениях "многие-ко-многим" можно добавить операторы
where
в таблицу pivot, используя метод `wherePivot
`.👉 @php_lib
👍6
Советы по работе с Laravel: Views
Совместное использование одной переменной с несколькими представлениями.
Возникала ли у вас необходимость в совместном использовании одной переменной с несколькими представлениями в Laravel? Вот простое решение.
👉 @php_lib
Совместное использование одной переменной с несколькими представлениями.
Возникала ли у вас необходимость в совместном использовании одной переменной с несколькими представлениями в Laravel? Вот простое решение.
use App\Models\Post;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
if (Schema::hasTable('posts')) {
View::share('recentPosts', Post::latest()->take(3)->get());
}
}
}
👉 @php_lib
👍4👎1
Встраиваем Lua в PHP через FFI
Foreign Function Interface — это перспективная альтернатива для традиционных PHP-расширений.
Сегодня мы будем разбирать FFI-библиотеку для работы с liblua5 из PHP, которая позволит исполнять скрипты на Lua из нашего приложения.
https://habr.com/ru/companies/vk/articles/681400/
👉 @php_lib
Foreign Function Interface — это перспективная альтернатива для традиционных PHP-расширений.
Сегодня мы будем разбирать FFI-библиотеку для работы с liblua5 из PHP, которая позволит исполнять скрипты на Lua из нашего приложения.
https://habr.com/ru/companies/vk/articles/681400/
👉 @php_lib
👍2
Расшифровка функций пустых значений в PHP: Когда какие функции использовать
В PHP проверка пустых значений является распространенной операцией, и существует несколько способов ее выполнения. Понимание различий между использованием !, is_null() и isset() очень важно, поскольку каждый из них проверяет различные условия:
https://dev.to/salmazz/php-check-for-empty-values-vs-isnull-vs-isset-vs-isempty-46k4
👉 @php_lib
В PHP проверка пустых значений является распространенной операцией, и существует несколько способов ее выполнения. Понимание различий между использованием !, is_null() и isset() очень важно, поскольку каждый из них проверяет различные условия:
https://dev.to/salmazz/php-check-for-empty-values-vs-isnull-vs-isset-vs-isempty-46k4
👉 @php_lib
👍4
Представляем Laravel Pulse. 💓
Pulse позволяет с первого взгляда определить производительность и использование продакшена. Отслеживайте медленные задания и конечные точки, находите наиболее активных пользователей и многое другое.
На следующей неделе на GitHub. Подарок от Laravel для вас.
https://pulse.laravel.com/
👉 @php_lib
Pulse позволяет с первого взгляда определить производительность и использование продакшена. Отслеживайте медленные задания и конечные точки, находите наиболее активных пользователей и многое другое.
На следующей неделе на GitHub. Подарок от Laravel для вас.
https://pulse.laravel.com/
👉 @php_lib
👍7
Совет по безопасности: увеличьте количество раундов bcrypt
https://securinglaravel.com/p/security-tip-increase-your-bcrypt
👉 @php_lib
https://securinglaravel.com/p/security-tip-increase-your-bcrypt
👉 @php_lib
👍2
Исповедь ничтожества
Эта статья - история моей карьеры. Я не уверен, есть ли тут хоть какая-либо ценность для сообщества, но возможно кто-то узнает в какой-либо части истории себя, и, опять же, возможно какие-то моменты помогут ему проанализировать свою карьеру и не повторить моих ошибок. В общем - это история тридцатилетнего разработчика-недоучки с раздутым самомнением, который наконец осознал, что вся та исключительность, про которую ему намекали и в которую он свято верил - это точно не про него.
P.S. Извиняюсь за кликбейтный заголовок, но, мне кажется, он лучше всего описывает содержание этой статьи.
P.P.S. Очень много текста внутри.
https://habr.com/ru/articles/683674/
👉 @php_lib
Эта статья - история моей карьеры. Я не уверен, есть ли тут хоть какая-либо ценность для сообщества, но возможно кто-то узнает в какой-либо части истории себя, и, опять же, возможно какие-то моменты помогут ему проанализировать свою карьеру и не повторить моих ошибок. В общем - это история тридцатилетнего разработчика-недоучки с раздутым самомнением, который наконец осознал, что вся та исключительность, про которую ему намекали и в которую он свято верил - это точно не про него.
P.S. Извиняюсь за кликбейтный заголовок, но, мне кажется, он лучше всего описывает содержание этой статьи.
P.P.S. Очень много текста внутри.
https://habr.com/ru/articles/683674/
👉 @php_lib
Хабр
Исповедь ничтожества
Эта статья - история моей карьеры. Я не уверен, есть ли тут хоть какая-либо ценность для сообщества, но возможно кто-то узнает в какой-либо части истории себя, и, опять же, возможно какие-то моменты...
👍2👎2🤔1
Типичный Swagger без гмо
Кто из нас не был одурманен сказками про свагер? Мол, добавь эту волшебную штуку — да заживешь! Но плата за магию — зеленое болото нотаций. А нельзя ли обойтись только типизацией самого php?
https://habr.com/ru/articles/775056/
👉 @php_lib
Кто из нас не был одурманен сказками про свагер? Мол, добавь эту волшебную штуку — да заживешь! Но плата за магию — зеленое болото нотаций. А нельзя ли обойтись только типизацией самого php?
https://habr.com/ru/articles/775056/
👉 @php_lib
Хабр
Типичный Swagger без гмо
Кто из нас не был одурманен сказками про свагер? Мол, добавь эту волшебную штуку — да заживешь! Но плата за магию — зеленое болото нотаций. А нельзя ли обойтись только типизацией самого php? (Спойлер:...
👍2
Совет Laravel 🔥
В конструктор запросов Laravel входит функция `
👉 @php_lib
В конструктор запросов Laravel входит функция `
lockForUpdate()
`. Она останавливает любые обновления или другую общую блокировку выбранной записи до тех пор, пока транзакция не будет завершена.👉 @php_lib
👍5