تعد حزمة chromedp
طريقة أسرع وأبسط لتشغيل المتصفحات التي تدعم بروتوكول Chrome DevTools في Go دون تبعيات خارجية.
التثبيت بطريقة Go المعتادة:
$ اذهب واحصل على -u github.com/chromedp/chromedp
راجع مرجع Go للحصول على الوثائق والأمثلة. بالإضافة إلى ذلك، يحتوي مستودع الأمثلة على المزيد من الأمثلة على الإجراءات المعقدة، وغيرها من المهام الشائعة عالية المستوى مثل التقاط لقطات شاشة كاملة للصفحة.
لا أستطيع رؤية أي نافذة لمتصفح Chrome
افتراضيًا، يتم تشغيل Chrome في وضع مقطوعة الرأس. راجع DefaultExecAllocatorOptions
، ومثال لتجاوز الخيارات الافتراضية.
أرى أخطاء "تم إلغاء السياق".
عند فقدان الاتصال بالمتصفح، يقوم chromedp
بإلغاء السياق، وقد يؤدي ذلك إلى حدوث هذا الخطأ. ويحدث هذا، على سبيل المثال، إذا تم إغلاق المتصفح يدويًا، أو إذا تم إيقاف عملية المتصفح أو إنهاؤها بطريقة أخرى.
يتم إنهاء Chrome بمجرد انتهاء برنامج Go الخاص بي
في نظام التشغيل Linux، يتم تكوين chromedp
لتجنب تسرب الموارد عن طريق إيقاف أي عمليات فرعية بدأت في Chrome. إذا كنت بحاجة إلى تشغيل مثيل Chrome طويل الأمد، فقم بتشغيل Chrome يدويًا واتصل باستخدام RemoteAllocator
.
تنفيذ إجراء بدون
Run
يؤدي إلى "سياق غير صالح"
بشكل افتراضي، لا يحتوي سياق chromedp
على منفذ، ولكن يمكن تحديده يدويًا إذا لزم الأمر؛ انظر العدد رقم 326 مثالا.
لا يمكنني استخدام
Action
معRun
لأنه يُرجع العديد من القيم
قم بلفها باستخدام ActionFunc
:
ctx، Cancel := chromedp.NewContext(context.Background())defer Cancel()chromedp.Run(ctx, chromedp.ActionFunc(func(ctx context.Context) error { _, err := domain.SomeAction().Do (ctx) إرجاع خطأ)))
أريد استخدام chromedp في بيئة مقطوعة الرأس
إن أبسط طريقة هي تشغيل برنامج Go الذي يستخدم chromedp داخل صورة chromedp/headless-shell. تحتوي هذه الصورة على headless-shell
، وهو إصدار أصغر بدون رأس من Chrome، والذي يستطيع chromedp
اكتشافه خارج الصندوق.
headless-shell
- بنية من headless-shell
تُستخدم لاختبار chromedp
chromedp: طريقة جديدة لقيادة الويب - حديث GopherCon SG 2017
بروتوكول Chrome DevTools - مرجع بروتوكول Chrome DevTools
أمثلة chromedp - أمثلة أكثر تعقيدًا لـ chromedp
github.com/chromedp/cdproto
- مرجع الانتقال إلى واجهة برمجة تطبيقات Chrome DevTools Protocol التي تم إنشاؤها
github.com/chromedp/pdlgen
- الأداة المستخدمة لإنشاء cdproto
github.com/chromedp/chromedp-proxy
- وكيل CDP بسيط لتسجيل عملاء ومتصفحات CDP