pixivpy-async
pixivpy-async copied to clipboard
有计划向pixivpy一样提供一个bypass类似的类么?
大陆地区访问比较难,有点麻烦(
嗯..其实我感觉像bypass那样通过IP来连接的方法不太牢靠(说不定什么时候IP就被墙了呢),推荐通过现有的api_proxy功能来解决。(其实是因为懒qwq
对于Proxy,可以使用下面这种方法简单的创建一个:
创建一个CloudFlare Worker(假设为api.c.worker.dev),然后把下面的代码扔进去:
addEventListener("fetch", e => {
let t = e.request, d = new URL(t.url);
d.hostname = (t.url.includes("auth/token") ? "oauth.secure" : "app-api") + ".pixiv.net";
e.respondWith(fetch(d, {body: t.body, headers: t.headers, method: t.method}))
});
然后指定一下proxy即可:
aapi.set_api_proxy(app_hosts="api.c.worker.dev", auth_hosts="api.c.worker.dev")
await aapi.login(username, password)
哈哈,被你说中了。好像有些地方1.0.0.1被墙了
@Mikubill 感谢
嗯..其实我感觉像bypass那样通过IP来连接的方法不太牢靠(说不定什么时候IP就被墙了呢),推荐通过现有的api_proxy功能来解决。(其实是因为懒qwq
对于Proxy,可以使用下面这种方法简单的创建一个:
创建一个CloudFlare Worker(假设为api.c.worker.dev),然后把下面的代码扔进去:
addEventListener("fetch", e => { let t = e.request, d = new URL(t.url); d.hostname = (t.url.includes("auth/token") ? "oauth.secure" : "app-api") + ".pixiv.net"; e.respondWith(fetch(d, {body: t.body, headers: t.headers, method: t.method})) });
然后指定一下proxy即可:
aapi.set_api_proxy(app_hosts="api.c.worker.dev", auth_hosts="api.c.worker.dev") await aapi.login(username, password)
今天使用时报错,返回403
raise ContentTypeError(
aiohttp.client_exceptions.ContentTypeError: 0, message='Attempt to decode JSON with unexpected mimetype: text/html; charset=utf-8', url=URL('我的cloudflare')
然后超过尝试次数。以前按照上面设置是有效使用的,请问是我的ip地址被ban了嘛还是需要修改cloudflare
最近搞了个批量解析的方法,主要还是通过 DNS over HTTP(s)
来解析。如果1.1.1.1被墙还能用其他能访问的:
https://github.com/upbit/pixivpy/blob/master/pixivpy3/bapi.py#L26
CloudFlare Worker 门槛有点高,或者另一个思路是搞一批公用的池子(不知道有没有人用过)
@upbit 我试一下,谢谢大佬
嗯..其实我感觉像bypass那样通过IP来连接的方法不太牢靠(说不定什么时候IP就被墙了呢),推荐通过现有的api_proxy功能来解决。(其实是因为懒qwq
对于Proxy,可以使用下面这种方法简单的创建一个:
创建一个CloudFlare Worker(假设为api.c.worker.dev),然后把下面的代码扔进去:
addEventListener("fetch", e => { let t = e.request, d = new URL(t.url); d.hostname = (t.url.includes("auth/token") ? "oauth.secure" : "app-api") + ".pixiv.net"; e.respondWith(fetch(d, {body: t.body, headers: t.headers, method: t.method})) });
然后指定一下proxy即可:
aapi.set_api_proxy(app_hosts="api.c.worker.dev", auth_hosts="api.c.worker.dev") await aapi.login(username, password)
目前此方法已失效,请问需要如何调整。