├── .eslintrc.json ├── src ├── app │ ├── favicon.ico │ ├── about │ │ └── page.tsx │ ├── layout.tsx │ ├── globals.css │ └── page.tsx ├── types │ └── type.d.ts └── components │ ├── list.tsx │ └── side.tsx ├── next.config.js ├── postcss.config.js ├── .idea ├── vcs.xml ├── jsLibraryMappings.xml └── inspectionProfiles │ └── Project_Default.xml ├── .editorconfig ├── tailwind.config.js ├── tsconfig.json ├── package.json ├── README.md ├── public └── github.svg ├── .gitignore ├── LICENSE └── pnpm-lock.yaml /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zsio/Free-GPT-No-Auth/HEAD/src/app/favicon.ico -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = {} 3 | 4 | module.exports = nextConfig 5 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /src/app/about/page.tsx: -------------------------------------------------------------------------------- 1 | 2 | export default function About() { 3 | 4 | return ( 5 |
6 | 关于我 7 |
8 | ) 9 | } 10 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/jsLibraryMappings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = crlf 6 | indent_size = 2 7 | indent_style = space 8 | insert_final_newline = true 9 | max_line_length = 120 10 | tab_width = 2 11 | trim_trailing_whitespace = true 12 | -------------------------------------------------------------------------------- /src/types/type.d.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | export enum ModelType { 4 | 'gpt3', 5 | 'gpt4', 6 | } 7 | 8 | export interface Site { 9 | title: string 10 | url: string 11 | modelType: (keyof typeof ModelType)[] 12 | icon?: string 13 | newWindow?: boolean 14 | } 15 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: [ 4 | './src/pages/**/*.{js,ts,jsx,tsx,mdx}', 5 | './src/components/**/*.{js,ts,jsx,tsx,mdx}', 6 | './src/app/**/*.{js,ts,jsx,tsx,mdx}', 7 | ], 8 | theme: { 9 | extend: { 10 | backgroundImage: { 11 | 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', 12 | 'gradient-conic': 13 | 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))', 14 | }, 15 | }, 16 | }, 17 | plugins: [require("daisyui")], 18 | } 19 | -------------------------------------------------------------------------------- /src/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import './globals.css' 2 | import {Inter} from 'next/font/google' 3 | 4 | import { Analytics } from '@vercel/analytics/react'; 5 | 6 | 7 | const inter = Inter({ subsets: ['latin'] }) 8 | 9 | export const metadata = { 10 | title: '保持更新GPT', 11 | description: '收集免费、无需登录的GPT镜像站。此站点永久免费且保持更新。', 12 | } 13 | 14 | 15 | export default function RootLayout({ 16 | children, 17 | }: { 18 | children: React.ReactNode 19 | }) { 20 | return ( 21 | 22 | {children} 23 | 24 | 25 | ) 26 | } 27 | -------------------------------------------------------------------------------- /src/app/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | :root { 6 | --foreground-rgb: 0, 0, 0; 7 | --background-start-rgb: 214, 219, 220; 8 | --background-end-rgb: 255, 255, 255; 9 | } 10 | 11 | @media (prefers-color-scheme: dark) { 12 | :root { 13 | --foreground-rgb: 255, 255, 255; 14 | --background-start-rgb: 0, 0, 0; 15 | --background-end-rgb: 0, 0, 0; 16 | } 17 | } 18 | 19 | ::-webkit-scrollbar { 20 | width: 4px; 21 | } 22 | 23 | ::-webkit-scrollbar-thumb { 24 | background-color: rgba(var(--foreground-rgb), 0.5); 25 | border-radius: 20%; 26 | } 27 | 28 | body { 29 | padding: 0; 30 | } 31 | 32 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "noEmit": true, 10 | "esModuleInterop": true, 11 | "module": "esnext", 12 | "moduleResolution": "node", 13 | "resolveJsonModule": true, 14 | "isolatedModules": true, 15 | "jsx": "preserve", 16 | "incremental": true, 17 | "plugins": [ 18 | { 19 | "name": "next" 20 | } 21 | ], 22 | "paths": { 23 | "@/*": ["./src/*"] 24 | } 25 | }, 26 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 27 | "exclude": ["node_modules"] 28 | } 29 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "free-gpt-no-login", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev -p 13002", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "@types/node": "20.3.3", 13 | "@types/react": "18.2.14", 14 | "@types/react-dom": "18.2.6", 15 | "@vercel/analytics": "^1.0.1", 16 | "autoprefixer": "10.4.14", 17 | "eslint": "8.44.0", 18 | "eslint-config-next": "13.4.8", 19 | "next": "13.4.8", 20 | "postcss": "8.4.24", 21 | "react": "18.2.0", 22 | "react-dom": "18.2.0", 23 | "tailwindcss": "3.3.2", 24 | "typescript": "5.1.6" 25 | }, 26 | "devDependencies": { 27 | "daisyui": "^3.1.7" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 |

Free GPT 🆓 No Auth ⛔

3 |
4 | 5 |

6 | 收集免费公开、无需登录的GPT镜像站 7 |

8 | 9 |
10 | 11 | [![Discord Server](https://discordapp.com/api/guilds/1125981168584626247/widget.png?style=banner2&count=true)](https://discord.gg/cYUU8mCDMd) 12 |

13 | 你可以加入discord: 14 | discord.gg/8AZ9Xa37 15 | 以获取项目最新进展. 16 | 17 | gpt4free Discord 18 | 19 |

20 |
21 | 22 | 23 | ### ✔️ TODO 24 | 25 | - [x] 左侧菜单切换各网站。 26 | - [ ] 通过配置的方式提供列表。 27 | - [ ] Nextjs 服务端添加代理,将某一小部分接口转换为兼容OpenAI API的接口。 28 | 29 | This is a [Next.js](https://nextjs.org/) project 30 | 31 | 32 | ## 🚩 仍在努力保持更新 33 | 众人拾柴火焰高,此项目离不开大家的支持,如果你有好的想法或者发现了新的网站,欢迎提交PR或者Issue。 34 | 35 | 36 | ## 🏃 运行 37 | 38 | [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/zsio/Free-GPT-No-Auth&project-name=free-gpt-no-auth&repository-name=Free-GPT-No-Auth) 39 | -------------------------------------------------------------------------------- /src/components/list.tsx: -------------------------------------------------------------------------------- 1 | import {Site} from "@/types/type"; 2 | 3 | 4 | interface Props { 5 | sites: Site[] 6 | site?: Site 7 | onChange: (site: Site) => void 8 | } 9 | 10 | 11 | 12 | export default function List(props: Props) { 13 | 14 | const {onChange, sites, site: currentSite} = props; 15 | 16 | const gpt3Sites = sites.filter(site => site.modelType.includes('gpt3')) 17 | const gpt4Sites = sites.filter(site => site.modelType.includes('gpt4')) 18 | 19 | const liTag = (site: Site) => ( 20 |
  • onChange(site)} 23 | key={site.url}> 24 | {site.title} 25 | { 26 | site.newWindow && ( 27 | 28 | ↗ 29 | 30 | ) 31 | } 32 |
  • 33 | ) 34 | 35 | return ( 36 | 51 | ) 52 | } 53 | -------------------------------------------------------------------------------- /src/components/side.tsx: -------------------------------------------------------------------------------- 1 | import type {Site} from '@/types/type' 2 | 3 | import Image from 'next/image'; 4 | import List from "@/components/list"; 5 | 6 | 7 | interface Props { 8 | sites: Site[] 9 | site?: Site 10 | onChange: (site: Site) => void 11 | } 12 | 13 | 14 | export default function Side(props: Props) { 15 | 16 | return ( 17 | <> 18 |
    19 |
    20 |
    21 |
    24 |
    25 | 26 |
    27 |
    28 | 34 |
    35 |
    36 | 37 |
    38 |
    39 |

    点击下方的网站列表,刷新页面即可返回。

    40 | 41 |
    42 |
    43 | 44 | 45 | 46 | 47 | ) 48 | } 49 | -------------------------------------------------------------------------------- /public/github.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | .next 4 | 5 | # dependencies 6 | /node_modules 7 | /.pnp 8 | .pnp.js 9 | 10 | # testing 11 | /coverage 12 | 13 | # next.js 14 | /.next/ 15 | /out/ 16 | 17 | # production 18 | /build 19 | 20 | # misc 21 | .DS_Store 22 | *.pem 23 | 24 | # debug 25 | npm-debug.log* 26 | yarn-debug.log* 27 | yarn-error.log* 28 | 29 | # local env files 30 | .env*.local 31 | 32 | # vercel 33 | .vercel 34 | 35 | # typescript 36 | *.tsbuildinfo 37 | next-env.d.ts 38 | 39 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider 40 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 41 | 42 | # User-specific stuff 43 | .idea/**/workspace.xml 44 | .idea/**/tasks.xml 45 | .idea/**/usage.statistics.xml 46 | .idea/**/dictionaries 47 | .idea/**/shelf 48 | 49 | # AWS User-specific 50 | .idea/**/aws.xml 51 | 52 | # Generated files 53 | .idea/**/contentModel.xml 54 | 55 | # Sensitive or high-churn files 56 | .idea/**/dataSources/ 57 | .idea/**/dataSources.ids 58 | .idea/**/dataSources.local.xml 59 | .idea/**/sqlDataSources.xml 60 | .idea/**/dynamic.xml 61 | .idea/**/uiDesigner.xml 62 | .idea/**/dbnavigator.xml 63 | 64 | # Gradle 65 | .idea/**/gradle.xml 66 | .idea/**/libraries 67 | 68 | # Gradle and Maven with auto-import 69 | # When using Gradle or Maven with auto-import, you should exclude module files, 70 | # since they will be recreated, and may cause churn. Uncomment if using 71 | # auto-import. 72 | # .idea/artifacts 73 | # .idea/compiler.xml 74 | # .idea/jarRepositories.xml 75 | # .idea/modules.xml 76 | # .idea/*.iml 77 | # .idea/modules 78 | # *.iml 79 | # *.ipr 80 | 81 | # CMake 82 | cmake-build-*/ 83 | 84 | # Mongo Explorer plugin 85 | .idea/**/mongoSettings.xml 86 | 87 | # File-based project format 88 | *.iws 89 | 90 | # IntelliJ 91 | out/ 92 | 93 | # mpeltonen/sbt-idea plugin 94 | .idea_modules/ 95 | 96 | # JIRA plugin 97 | atlassian-ide-plugin.xml 98 | 99 | # Cursive Clojure plugin 100 | .idea/replstate.xml 101 | 102 | # SonarLint plugin 103 | .idea/sonarlint/ 104 | 105 | # Crashlytics plugin (for Android Studio and IntelliJ) 106 | com_crashlytics_export_strings.xml 107 | crashlytics.properties 108 | crashlytics-build.properties 109 | fabric.properties 110 | 111 | # Editor-based Rest Client 112 | .idea/httpRequests 113 | 114 | # Android studio 3.1+ serialized cache file 115 | .idea/caches/build_file_checksums.ser 116 | -------------------------------------------------------------------------------- /src/app/page.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import {useState} from "react"; 4 | import Side from '@/components/side' 5 | import { Site } from "@/types/type"; 6 | import Link from "next/link"; 7 | 8 | 9 | const sites: Site[] = [ 10 | { 11 | title: 'FreeGPT', 12 | modelType: ['gpt3'], 13 | url: 'https://chat.api-box.com', 14 | }, 15 | { 16 | title: 'acytoo', 17 | modelType: ['gpt3'], 18 | url: 'https://chat.acytoo.com/', 19 | }, 20 | { 21 | title: 'gpt2', 22 | modelType: ['gpt3'], 23 | url: 'https://chat.getgpt.world', 24 | }, 25 | { 26 | title: 'ai.ls', 27 | modelType: ['gpt3'], 28 | url: 'https://ai.ls/', 29 | }, 30 | { 31 | title: 'ikunn', 32 | modelType: ['gpt3'], 33 | url: 'https://ikunn.icu/', 34 | } 35 | ] 36 | 37 | export default function Home() { 38 | 39 | const [site, setSite] = useState() 40 | 41 | /** 42 | * change site 43 | * @param site Site 44 | * @returns void 45 | */ 46 | const handleChangeSite = (site: Site)=> { 47 | if (!site) return 48 | const {url, newWindow} = site 49 | if (newWindow){ 50 | // open in a new window 51 | window.open(url) 52 | return 53 | } 54 | // open in the same window 55 | setSite(site) 56 | } 57 | 58 | 59 | return ( 60 |
    61 | 62 |
    63 | { 64 | site?.url ? ( 65 |
    66 |