{"id":76109,"date":"2020-01-20T14:19:35","date_gmt":"2020-01-20T08:49:35","guid":{"rendered":"https:\/\/www.vskills.in\/certification\/tutorial\/?p=76109"},"modified":"2024-04-12T14:23:57","modified_gmt":"2024-04-12T08:53:57","slug":"ios-webkit-debug-proxy-2","status":"publish","type":"page","link":"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/","title":{"rendered":"iOS WebKit Debug Proxy"},"content":{"rendered":"\n<p><a href=\"https:\/\/www.vskills.in\/certification\/tutorial\/mobile-testing-appium-tutorials\/\" target=\"_blank\" rel=\"noreferrer noopener\">Go back to tutorial<\/a><\/p>\n\n\n<p>The ios_webkit_debug_proxy (aka iwdp) proxies requests from usbmuxd daemon over a websocket connection, allowing developers to send commands to MobileSafari and UIWebViews on real and simulated iOS devices. For accessing web views on real iOS device appium uses ios_webkit_debug_proxy.<\/p>\n<p><strong>Design<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-139784\" src=\"https:\/\/www.vskills.in\/lms\/wp-content\/uploads\/2019\/07\/image049-2.png\" alt=\"\" width=\"394\" height=\"457\"><\/p>\n<p><strong>Installation<\/strong><\/p>\n<p>iOS WebKit Debug Proxy works on Linux, MacOS &amp; Windows.<\/p>\n<p>On a MacOS, it&#8217;s easiest to install with homebrew:<\/p>\n<p>brew install ios-webkit-debug-proxy<\/p>\n<p>On Windows, it&#8217;s easiest to install with scoop:<\/p>\n<p>scoop bucket add extras<\/p>\n<p>scoop install ios-webkit-debug-proxy<\/p>\n<p>On Linux:<\/p>\n<p>sudo apt-get install autoconf automake libusb-dev libusb-1.0-0-dev libplist-dev libplist++-dev usbmuxd libtool libimobiledevice-dev<\/p>\n<p>git clone https:\/\/github.com\/google\/ios-webkit-debug-proxy.git<\/p>\n<p>cd ios-webkit-debug-proxy<\/p>\n<p>.\/autogen.sh<\/p>\n<p>make<\/p>\n<p>sudo make install<\/p>\n<p>Building ios-webkit-debug-proxy from source:<\/p>\n<p>Open the command terminal on your mac. You can find instructions on how to open the terminal via your favorite search engine. Once that is open, verify you have Homebew installed:<\/p>\n<p>$ brew -v<\/p>\n<p>When you&#8217;re certain you have Homebrew, do the following (the $ indicates the command line prompt, do not enter it):<\/p>\n<p>$ cd&nbsp; ~<\/p>\n<p>$ sudo apt-get install autoconf automake libusb-dev libusb-1.0-0-dev libplist-dev libplist++-dev usbmuxd libtool libimobiledevice-dev<\/p>\n<p>$ git clone https:\/\/github.com\/google\/ios-webkit-debug-proxy.git<\/p>\n<p>$ cd ios-webkit-debug-proxy<\/p>\n<p>$ .\/autogen.sh<\/p>\n<p>$ make<\/p>\n<p>$ sudo make install<\/p>\n<p><strong>Usage<\/strong><\/p>\n<p>On Linux, you must run the usbmuxd daemon. The above install adds a \/lib\/udev rule to start the daemon whenever a device is attached.<\/p>\n<p>To verify that usbmuxd can list your attached device(s), ensure that libimobiledevice-utils is installed, or install it with:<\/p>\n<p>sudo apt-get install libimobiledevice-utils<\/p>\n<p>and then run idevice_id -l<\/p>\n<p><strong>Start the simulator or device <\/strong>&#8211; The iOS Simulator is supported, but it must be started before the proxy. The simulator can be started in XCode, standalone, or via the command line:<\/p>\n<p># Xcode changes these paths frequently, so doublecheck them<\/p>\n<p>SDK_DIR=&#8221;\/Applications\/Xcode.app\/Contents\/Developer\/Platforms\/iPhoneSimulator.platform\/Developer\/SDKs&#8221;<\/p>\n<p>SIM_APP=&#8221;\/Applications\/Xcode.app\/Contents\/Developer\/Applications\/Simulator.app\/Contents\/MacOS\/Simulator&#8221;<\/p>\n<p>$SIM_APP -SimulateApplication $SDK_DIR\/iPhoneSimulator8.4.sdk\/Applications\/MobileSafari.app\/MobileSafari<\/p>\n<p>Enable the inspector &#8211; Your attached iOS devices must have \u22651 open browser tabs and the inspector enabled via: Settings &gt; Safari &gt; Advanced &gt; Web Inspector = ON<\/p>\n<p><strong>Start the proxy<\/strong><\/p>\n<p>ios_webkit_debug_proxy<\/p>\n<ul>\n<li>&#8211;debug for verbose output.<\/li>\n<li>&#8211;frontend to specify a frontend<\/li>\n<li>&#8211;help for more options.<\/li>\n<li>Ctrl-C to quit. Also, the proxy can be left running as a background process.<\/li>\n<\/ul>\n<p><strong>Using with DevTools <\/strong>&#8211; ios_webkit_debug_proxy can be used with many tools such as Chrome DevTools and Safari Web Inspector.<\/p>\n<p>Chrome Devtools &#8211; To use Chrome DevTools it&#8217;s the recommendation to use the RemoteDebug\/remotedebug-ios-webkit-adapter project, which has instructions on how to setup Chrome to remote debug iOS devices, much similar to Android debugging.<\/p>\n<p>The reason is that recent versions of Chrome and Safari there&#8217;re major discrepancies between Chrome Remote Debugging Protocol and Apple&#8217;s Remote Web Inspector service, which means that newer versions of Chrome DevTools aren&#8217;t compatible with Safari.<\/p>\n<p>Safari Web Inspector &#8211; You can use Safari Web Inspector extracted from Webkit sources, e.g. artygus\/webkit-webinspector.<\/p>\n<p>Firefox DevTools via Valence &#8211; Another option is mozilla\/valence which enables Firefox DevTools to be used with iOS.<\/p>\n<p><strong>Configuration<\/strong><\/p>\n<p>View and inspect debuggable tabs &#8211;&nbsp; Navigate to localhost:9221. You&#8217;ll see a listing of all connected devices. Click through to view tabs available on each, and click through again to open the DevTools for a tab.<\/p>\n<p>Setting the DevTools UI URL &#8211; Chrome DevTools UI used as a default frontend:<\/p>\n<p>http:\/\/chrome-devtools-frontend.appspot.com\/static\/27.0.1453.93\/devtools.html<\/p>\n<p>You can use the -f argument to specify different frontend source, like Chrome&#8217;s local DevTools, a local Chromium checkout or another URL:<\/p>\n<p># examples:<\/p>\n<p>ios_webkit_debug_proxy -f chrome-devtools:\/\/devtools\/bundled\/inspector.html<\/p>\n<p>ios_webkit_debug_proxy -f ~\/chromium\/src\/third_party\/WebKit\/Source\/devtools\/front_end\/inspector.html<\/p>\n<p>ios_webkit_debug_proxy -f http:\/\/foo.com:1234\/bar\/inspector.html<\/p>\n<p>If you use -f chrome-devtools:\/\/devtools\/bundled\/inspector.html, you won&#8217;t be able to click the links shown in localhost:9222 as Chrome blocks clicking these URLs. However, you can copy\/paste them into the address bar.<\/p>\n<p>Just the same, you can apply the appropriate port (9222) and page (2) values below.<\/p>\n<p>chrome-devtools:\/\/devtools\/bundled\/inspector.html?ws=localhost:9222\/devtools\/page\/1<\/p>\n<p>The -f value must end in &#8220;.html&#8221;. Due to security reasons, https URLs will not work; use http or force-allow with the URL bar&#8217;s shield icon. As of Chrome 45, the primary URL changed from devtools.html to inspector.html.<\/p>\n<p>To disable the frontend proxy, use the &#8211;no-frontend argument.<\/p>\n<p>Port assignment &#8211; The default configuration works well for most developers. The device_id-to-port assignment defaults to:<\/p>\n<p>:9221 for the device list<\/p>\n<p>:9222 for the first iOS device that is attached<\/p>\n<p>:9223 for the second iOS device that is attached<\/p>\n<p>&#8230;<\/p>\n<p>:9322 for the max device<\/p>\n<p>If a port is in use then the next available port will be used, up to the range limit.<\/p>\n<p>The port assignment is first-come-first-serve but is preserved if a device is detached and reattached, assuming that the proxy is not restarted, e.g.:<\/p>\n<ul>\n<li>start the proxy<\/li>\n<li>the device list gets :9221<\/li>\n<li>attach A gets :9222<\/li>\n<li>attach B gets :9223<\/li>\n<li>detach A, doesn&#8217;t affect B&#8217;s port<\/li>\n<li>attach C gets :9224 (not :9222)<\/li>\n<li>reattach A gets :9222 again (not :9225)<\/li>\n<\/ul>\n<p>The port assignment rules can be set via the command line with -c. The default is equivalent to:<\/p>\n<p>ios_webkit_debug_proxy -c null:9221,:9222-9322<\/p>\n<p>where &#8220;null&#8221; represents the device list. The following example restricts the proxy to a single device and port:<\/p>\n<p>ios_webkit_debug_proxy -c 4ea8dd11e8c4fbc1a2deadbeefa0fd3bbbb268c7:9227<\/p>\n<p><strong>Running ios-webkit-debug-proxy<\/strong><\/p>\n<p>Once installed you can start the proxy with the following command:<\/p>\n<p># Change the udid to be the udid of the attached device and make sure to set the port to 27753<\/p>\n<p># as that is the port the remote-debugger uses. You can learn how to retrieve the UDID from<\/p>\n<p># Apple&#8217;s developer resources.<\/p>\n<p>&gt; ios_webkit_debug_proxy -c 0e4b2f612b65e98c1d07d22ee08678130d345429:27753 -d<\/p>\n<p>You can also set the desired capability called startIWDP to true. This will run the above command as a subprocess from within Appium and will set the udid, so you don&#8217;t have to run ios_webkit_debug_proxy yourself anymore. It monitors the proxy for crashes and relaunches when needed.<\/p>\n<p>\/\/ example desired capabilities<\/p>\n<p>{<\/p>\n<p>&#8220;browserName&#8221;: &#8220;Safari&#8221;,<\/p>\n<p>&#8220;platformName&#8221;: &#8220;iOS&#8221;,<\/p>\n<p>&#8220;deviceName&#8221;: &#8220;iPhone 7&#8221;,<\/p>\n<p>&#8220;automationName&#8221;: &#8220;XCUITest&#8221;,<\/p>\n<p>&#8220;startIWDP&#8221;: true,<\/p>\n<p>&#8220;udid&#8221;: &#8220;auto&#8221;<\/p>\n<p>}<\/p>\n<p>You may also use ios-webkit-debug-proxy-launcher, a small script included with the Appium codebase, to launch the proxy. It monitors the proxy log for errors, and relaunch the proxy where needed. This is also optional and may help with recent devices:<\/p>\n<p># change the udid<\/p>\n<p># note, this is run from an Appium repository<\/p>\n<p>&gt; .\/bin\/ios-webkit-debug-proxy-launcher.js -c 0e4b2f612b65e98c1d07d22ee08678130d345429:27753 -d<\/p>\n<p>The proxy requires the &#8220;web inspector&#8221; to be turned on to allow a connection to be established. Turn it on by going to settings &gt; safari &gt; advanced.<\/p>\n<p>Specifying non-default port &#8211; Appium expects ios-webkit-debug-proxy to be running on port 27753. If, for whatever reason, this needs to be changed, the webkitDebugProxyPort desired capability can be set with the port on which it the proxy is running.<\/p>\n\n\n<p><a href=\"https:\/\/www.vskills.in\/certification\/tutorial\/mobile-testing-appium-tutorials\/\" target=\"_blank\" rel=\"noreferrer noopener\">Go back to tutorial<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Go back to tutorial The ios_webkit_debug_proxy (aka iwdp) proxies requests from usbmuxd daemon over a websocket connection, allowing developers to send commands to MobileSafari and UIWebViews on real and simulated iOS devices. For accessing web views on real iOS device appium uses ios_webkit_debug_proxy. Design Installation iOS WebKit Debug Proxy works on Linux, MacOS &amp; Windows&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[7891],"tags":[7978],"class_list":["post-76109","page","type-page","status-publish","hentry","category-mobile-testing-appium","tag-ios-webkit-debug-proxy"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>iOS WebKit Debug Proxy - Tutorial<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"iOS WebKit Debug Proxy - Tutorial\" \/>\n<meta property=\"og:description\" content=\"Go back to tutorial The ios_webkit_debug_proxy (aka iwdp) proxies requests from usbmuxd daemon over a websocket connection, allowing developers to send commands to MobileSafari and UIWebViews on real and simulated iOS devices. For accessing web views on real iOS device appium uses ios_webkit_debug_proxy. Design Installation iOS WebKit Debug Proxy works on Linux, MacOS &amp; Windows....\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Tutorial\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/vskills.in\/\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-12T08:53:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.vskills.in\/lms\/wp-content\/uploads\/2019\/07\/image049-2.png\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/\",\"name\":\"iOS WebKit Debug Proxy - Tutorial\",\"isPartOf\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.vskills.in\/lms\/wp-content\/uploads\/2019\/07\/image049-2.png\",\"datePublished\":\"2020-01-20T08:49:35+00:00\",\"dateModified\":\"2024-04-12T08:53:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/#primaryimage\",\"url\":\"https:\/\/www.vskills.in\/lms\/wp-content\/uploads\/2019\/07\/image049-2.png\",\"contentUrl\":\"https:\/\/www.vskills.in\/lms\/wp-content\/uploads\/2019\/07\/image049-2.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.vskills.in\/certification\/tutorial\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"iOS WebKit Debug Proxy\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#website\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/\",\"name\":\"Tutorial\",\"description\":\"Vskills - A initiative in elearning and certification\",\"publisher\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.vskills.in\/certification\/tutorial\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#organization\",\"name\":\"Vskills\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg\",\"contentUrl\":\"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg\",\"width\":73,\"height\":55,\"caption\":\"Vskills\"},\"image\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/vskills.in\/\",\"https:\/\/x.com\/vskills_in\",\"https:\/\/www.linkedin.com\/company-beta\/1371554\/\",\"https:\/\/www.youtube.com\/channel\/UCMWnscxPwRF_PqXo9B7q_Tw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"iOS WebKit Debug Proxy - Tutorial","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/","og_locale":"en_US","og_type":"article","og_title":"iOS WebKit Debug Proxy - Tutorial","og_description":"Go back to tutorial The ios_webkit_debug_proxy (aka iwdp) proxies requests from usbmuxd daemon over a websocket connection, allowing developers to send commands to MobileSafari and UIWebViews on real and simulated iOS devices. For accessing web views on real iOS device appium uses ios_webkit_debug_proxy. Design Installation iOS WebKit Debug Proxy works on Linux, MacOS &amp; Windows....","og_url":"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/","og_site_name":"Tutorial","article_publisher":"https:\/\/www.facebook.com\/vskills.in\/","article_modified_time":"2024-04-12T08:53:57+00:00","og_image":[{"url":"https:\/\/www.vskills.in\/lms\/wp-content\/uploads\/2019\/07\/image049-2.png","type":"","width":"","height":""}],"twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/","url":"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/","name":"iOS WebKit Debug Proxy - Tutorial","isPartOf":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/#primaryimage"},"image":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.vskills.in\/lms\/wp-content\/uploads\/2019\/07\/image049-2.png","datePublished":"2020-01-20T08:49:35+00:00","dateModified":"2024-04-12T08:53:57+00:00","breadcrumb":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/#primaryimage","url":"https:\/\/www.vskills.in\/lms\/wp-content\/uploads\/2019\/07\/image049-2.png","contentUrl":"https:\/\/www.vskills.in\/lms\/wp-content\/uploads\/2019\/07\/image049-2.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/ios-webkit-debug-proxy-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.vskills.in\/certification\/tutorial\/"},{"@type":"ListItem","position":2,"name":"iOS WebKit Debug Proxy"}]},{"@type":"WebSite","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#website","url":"https:\/\/www.vskills.in\/certification\/tutorial\/","name":"Tutorial","description":"Vskills - A initiative in elearning and certification","publisher":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.vskills.in\/certification\/tutorial\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#organization","name":"Vskills","url":"https:\/\/www.vskills.in\/certification\/tutorial\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/","url":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg","contentUrl":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg","width":73,"height":55,"caption":"Vskills"},"image":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/vskills.in\/","https:\/\/x.com\/vskills_in","https:\/\/www.linkedin.com\/company-beta\/1371554\/","https:\/\/www.youtube.com\/channel\/UCMWnscxPwRF_PqXo9B7q_Tw"]}]}},"_links":{"self":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages\/76109","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/comments?post=76109"}],"version-history":[{"count":4,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages\/76109\/revisions"}],"predecessor-version":[{"id":84626,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages\/76109\/revisions\/84626"}],"wp:attachment":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/media?parent=76109"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/categories?post=76109"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/tags?post=76109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}