{"id":14973421,"url":"https://github.com/greengerong/prerender-java","last_synced_at":"2025-04-10T01:13:59.842Z","repository":{"id":11207452,"uuid":"13592860","full_name":"greengerong/prerender-java","owner":"greengerong","description":"java framework for prerender","archived":false,"fork":false,"pushed_at":"2023-07-09T08:28:03.000Z","size":169,"stargazers_count":122,"open_issues_count":1,"forks_count":48,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-10T01:13:54.775Z","etag":null,"topics":["angular1","crawler","java","prerender","prerendered-page","seo"],"latest_commit_sha":null,"homepage":"http://prerender.io/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/greengerong.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-10-15T14:48:26.000Z","updated_at":"2024-10-21T02:21:20.000Z","dependencies_parsed_at":"2025-01-08T17:19:16.802Z","dependency_job_id":"4cf5b7f2-6702-4ea0-999a-617acc77ffc6","html_url":"https://github.com/greengerong/prerender-java","commit_stats":{"total_commits":120,"total_committers":16,"mean_commits":7.5,"dds":"0.29166666666666663","last_synced_commit":"292bd36335126dd9ea3fd8329ce629efddeeb91c"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greengerong%2Fprerender-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greengerong%2Fprerender-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greengerong%2Fprerender-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greengerong%2Fprerender-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/greengerong","download_url":"https://codeload.github.com/greengerong/prerender-java/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248137890,"owners_count":21053775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular1","crawler","java","prerender","prerendered-page","seo"],"created_at":"2024-09-24T13:48:41.719Z","updated_at":"2025-04-10T01:13:59.820Z","avatar_url":"https://github.com/greengerong.png","language":"Java","readme":"Prerender Java \n===========================\n\nAre you using backbone, angular, emberjs, etc, but you're unsure about the SEO implications?\n\nUse this java filter that prerenders a javascript-rendered page using an external service and returns the HTML to the search engine crawler for SEO.\n\n`Note:` If you are using a `#` in your urls, make sure to change it to `#!`. [View Google's ajax crawling protocol](https://developers.google.com/webmasters/ajax-crawling/docs/getting-started)\n\n`Note:` Make sure you have more than one webserver thread/process running because the prerender service will make a request to your server to render the HTML.\n\n1:Add this line to your web.xml:\n\n    \u003cfilter\u003e\n          \u003cfilter-name\u003eprerender\u003c/filter-name\u003e\n          \u003cfilter-class\u003ecom.github.greengerong.PreRenderSEOFilter\u003c/filter-class\u003e\n          \u003cinit-param\u003e\n              \u003cparam-name\u003eprerenderToken\u003c/param-name\u003e\n              \u003cparam-value\u003e[get from prerender: https://prerender.io/]\u003c/param-value\u003e\n          \u003c/init-param\u003e\n      \u003c/filter\u003e\n      \u003cfilter-mapping\u003e\n          \u003cfilter-name\u003eprerender\u003c/filter-name\u003e\n          \u003curl-pattern\u003e/*\u003c/url-pattern\u003e\n      \u003c/filter-mapping\u003e\n\n2:add dependency on your project pom:\n\n    \u003cdependency\u003e\n      \u003cgroupId\u003ecom.github.greengerong\u003c/groupId\u003e\n      \u003cartifactId\u003eprerender-java\u003c/artifactId\u003e\n      \u003cversion\u003e1.6.4\u003c/version\u003e\n    \u003c/dependency\u003e\n\n## How it works\n1. Check to make sure we should show a prerendered page\n\t1. Check if the request is from a crawler (`_escaped_fragment_` or agent string)\n\t2. Check to make sure we aren't requesting a resource (js, css, etc...)\n\t3. (optional) Check to make sure the url is in the whitelist\n\t4. (optional) Check to make sure the url isn't in the blacklist\n2. Make a `GET` request to the [prerender service](https://github.com/prerender/prerender)(phantomjs server) for the page's prerendered HTML\n3. Return that HTML to the crawler\n\n## Customization\n\n### crawlerUserAgents\nexample: someproxy,someproxy1\n\n### whitelist\n\n### blacklist\n\n### forwardedURLHeader\nImportant for servers behind reverse proxy that need the public url to be used for pre-rendering.\nWe usually set the original url in an http header which is added by the reverse proxy (similar to the more standard `x-forwarded-proto` and `x-forwarded-for`)\n\n### protocol\nIf you specifically want to make sure that the Prerender service queries using https or http protocol, you can set the init-param `protocol` to `https` or `http` respectively.\n\n### Using your own prerender service\n\nIf you've deployed the prerender service on your own, set the `PRERENDER_SERVICE_URL` environment variable so that this package points there instead. Otherwise, it will default to the service already deployed at `http://service.prerender.io/`\n\n\t$ export PRERENDER_SERVICE_URL=\u003cnew url\u003e\n\nOr on heroku:\n\n\t$ heroku config:add PRERENDER_SERVICE_URL=\u003cnew url\u003e\n\nAs an alternative, you can pass `prerender_service_url` in the options object during initialization of the middleware\n\n``` xml\n config filter init param with \"prerenderServiceUrl\";\n```\n\n### prerender service token\n\nIf you want to use token with the prerender service, you can config it.\n\n\n``` xml\n config filter init param with \"prerenderToken\";\n```\n\n\n### prerender event handler\n\nIf you want to cache the caching, analytics, log or others, you can config it. It should be instance of \"com.github.greengerong.PreRenderEventHandler\"\n\n\n``` xml\n config filter init param with \"preRenderEventHandler\";\n```\n\n\n## Testing\n\nIf your URLs use a hash-bang:\n\n    If you want to see `http://localhost:3000/#!/profiles/1234`\n    Then go to `http://localhost:3000/?_escaped_fragment_=/profiles/1234`\n\nIf your URLs use push-state:\n\n    If you want to see `http://localhost:3000/profiles/1234`\n    Then go to `http://localhost:3000/profiles/1234?_escaped_fragment_=`\n    \n\nproject demo test url:\n\n    http://localhost:8080/test/?_escaped_fragment_=\n    \n## License\n\nThe MIT License (MIT)\n","funding_links":[],"categories":["开发框架"],"sub_categories":["Web框架"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgreengerong%2Fprerender-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgreengerong%2Fprerender-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgreengerong%2Fprerender-java/lists"}