Security News
38% of CISOs Fear They’re Not Moving Fast Enough on AI
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
@justalk/pornhub-api
Advanced tools
Powerful updated scraper for PornHub. Unlike others scrapers, it's working in 2020 October with their new website. It allows you to get any informations out of any page.
npm install @justalk/pornhub-api
or if you use yarn
yarn add @justalk/pornhub-api --ignore-engines
Scraping the title, pornstars and the download links of a page
const pornhub = require('@justalk/pornhub-api');
const url = 'https://www.pornhub.com/view_video.php?viewkey=ph56fc59c124c0c';
const video = await pornhub.page(url, ['title','pornstars','download_urls']);
Scraper: Parse any page of pornhub : search page, model, video page...
Download links: Get the download links in all the quality without registering
Search pagination: This api can scrap multiple page at the same time
Search by different criteria: Possibility to scrap different part of the site and to take advantage of the filter
Flexible: The results are always return in a very specific javascrypt type making it easy to integrate to your need.
async page(url, options)
name | type | description | default |
---|---|---|---|
url | String | [Mandatory] url of the page | - |
keys | Array | List of the keys | ['title'] |
name of key | return type | description |
---|---|---|
title | String | Title |
description | String | Description |
views | Number | Number total of views |
up_votes | Number | Number of up vote |
down_votes | Number | Number of down vote |
percent | Number | Percent of up vote |
author | String | Name of the uploader |
author_subscriber | Number | Number of subscriber of the uploader |
pornstars | Array | Names of the pornstars |
categories | Array | List of the names of the categories |
tags | Array | List of the names of the tags |
production | String | Type of production |
duration | Number | Duration in second |
number_of_comment | Number | Total number of comments |
thumbnail_url | String | Url of the thumbnail |
upload_date | Date | Date of upload |
download_urls | Object | List of download link by quality |
comments | Object | List of comments with additionnals informations |
related_videos | Object | List of related video with additionnals informations |
async search(value, keys, options)
name | type | description |
---|---|---|
value | String | value search in pornhub |
keys | Array or String if there is only one option | List of the keys |
options | Array | [OPTIONNAL] List of the optional options |
name of options | return type | description | options | default |
---|---|---|---|---|
page | Number | Number of page to scraper | - | 1 |
production | String | Type of production targeted | homemade, professional | - |
min_duration | Number | Minimum number of minute of the video searched | 10, 20, 30 | - |
max_duration | Number | Maximum number of minute of the video searched | 10, 20, 30 | - |
search | String | Type of search targeted | video, pornstars, gifs | video |
promo | String | Category of video | premium, modelhub | - |
name of keys | return type | description |
---|---|---|
related_search | String | List of the related researches |
related_pornstars | String | List of the related pornstars |
name of keys | return type | description |
---|---|---|
actor | String | Name of the actor |
video_number | Number | Number of video of the actor |
view_number | Number | Number of view of the actor |
rank | Number | Rank of the actor |
name of keys | return type | description |
---|---|---|
title | String | Title of the gif |
thumbnail_url | String | Url of the thumbnail |
link_mp4 | String | Url of the mp4 version |
link_webm | String | Url of the webm version |
There are two kind of possible way to search on pornhub. The first one is to search by term and the second one is to search by filter. This call is for the search by category and subcategory.
async video(keys, options)
name | type | description | default |
---|---|---|---|
keys | Array or String if there is only one option | [OPTIONNAL] List of the keys | null |
options | Array | [OPTIONNAL] List of the optional options | null |
name of keys | return type | description |
---|---|---|
related_search | String | List of the related videos |
related_pornstars | String | List of the related pornstars |
name of options | return type | description | options | default |
---|---|---|---|---|
page | Number | Number of page to scraper | - | 1 |
production | String | Type of production targeted | homemade, professional | - |
min_duration | Number | Minimum number of minute of the video searched | 10, 20, 30 | - |
max_duration | Number | Maximum number of minute of the video searched | 10, 20, 30 | - |
search | String | Type of search targeted | video, pornstars, gifs | video |
promo | String | Category of video | premium, modelhub | - |
filter | String | Filter of the page | MOST_VIEWED, HOTTEST, TOP_RATED | - |
async model(name, keys)
name | type | description |
---|---|---|
name | String | name of the model in pornhub |
keys | Array or String if there is only one option | List of the keys |
type | String | There is two kind of model : pornstar or model |
name of keys | return type | description |
---|---|---|
title | String | The name of the model |
description | String | The description of the model |
rank_model | String | The actual rank of the model |
rank_week_model | String | The rank of the model for the week |
rank_month_model | String | The rank of the model for this month |
rank_last_month_model | String | The rank of the model for last month |
rank_year_model | String | The rank of the model for this year |
relationship_status | String | The status of the model (Work only if the model has filled up this field) |
interested_in | String | The interest of the model (Work only if the model has filled up this field) |
gender | String | The gender of the model (Work only if the model has filled up this field) |
birthday | Date | The birthday of the model (Work only if the model has filled up this field) |
age | Number | The age of the model (Work only if the model has filled up this field) |
height | String | The height of the model (Work only if the model has filled up this field) |
weight | String | The weight of the model (Work only if the model has filled up this field) |
ethnicity | String | The ethnicity of the model (Work only if the model has filled up this field) |
video_views | Number | The number of video view of the model (Work only if the model has filled up this field) |
profile_views | Number | The number of profil view of the model (Work only if the model has filled up this field) |
videos_watched | Number | The number of video watched by the model (Work only if the model has filled up this field) |
joined | String | The period passed after the model joined Pornhub |
const pornhub = require('@justalk/pornhub-api');
const video = await pornhub.page(url, ['title']);
{
"title": "Name of the video"
}
const pornhub = require('@justalk/pornhub-api');
const video = await pornhub.page(url, ['title','description']);
{
"title": "Name of the video",
"description": "Description of the video"
}
const pornhub = require('@justalk/pornhub-api');
const video = await pornhub.page(url, ['title','pornstars','download_urls']);
{
"title": "Title of the video",
"pornstars": ["Sophie A","Rocco B"],
"download_urls": {
"720" : "https://p.com/link1",
"480" : "https://p.com/link2",
"360" : "https://p.com/link3"
}
}
const pornhub = require('@justalk/pornhub-api');
const video = await pornhub.search("Aa",["title","link","premium","hd"]);
[{
"link": "https://p.com/link1",
"title": "Title of the video",
"hd": true,
"premium": true
},{
"link": "https://p.com/link2",
"title": "Title of the video",
"hd": false,
"premium": false
}]
const pornhub = require('@justalk/pornhub-api');
const video = await pornhub.search("Aa",["actor","rank"],{production: 'homemade', search: 'pornstars'});
[{
"actor": "Herica Alue",
"rank": 8005,
},{
"actor": "Robert Laach",
"rank": 60
},{
"actor": "Aalix Lolo",
"rank": 6500
}]
For testing, install the node project and run the test command.
node install
npm test
Also, you can use the command under for running the test without the linter
npm run test-no
The tests are not execute on pornhub directly, the calls to pornhub are all mock with nock
to save html page of pornhub.
It has been done for having page that wont evolve through time. By example, if a comment is added on the real link, the tests will still be ok.
Any contribution is welcomed !
If you find an issue or just want to add your stone to the castle :
MIT - Copyright © JUSTAL Kevin
FAQs
Very complete scrapper for the famous porn website pornhub
We found that @justalk/pornhub-api demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.
Security News
Company News
Socket is joining TC54 to help develop standards for software supply chain security, contributing to the evolution of SBOMs, CycloneDX, and Package URL specifications.