Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不使用oAuth登录Instagram_C#_Android_Networking_Instagram - Fatal编程技术网

C# 不使用oAuth登录Instagram

C# 不使用oAuth登录Instagram,c#,android,networking,instagram,C#,Android,Networking,Instagram,我正在尝试再次登录instagram,但我必须在不使用api v2的情况下登录,该api v2使用oAuth进行验证。 我只有用户名和密码可以登录。 所以我所做的就是寻找一种方式,安卓的instagram应用程序,希望IOS能做到这一点 我看到它在以下url创建了一个请求: 如果您直接访问该链接,您很可能会收到一个错误消息,表示无法找到该页面。在谷歌搜索了一下之后,我发现了一篇2年前的帖子,上面说在Useragent中,我们必须包含字符串“Instagram”才能让它工作 我通过伪造usera

我正在尝试再次登录instagram,但我必须在不使用api v2的情况下登录,该api v2使用oAuth进行验证。 我只有用户名和密码可以登录。 所以我所做的就是寻找一种方式,安卓的instagram应用程序,希望IOS能做到这一点

我看到它在以下url创建了一个请求:

如果您直接访问该链接,您很可能会收到一个错误消息,表示无法找到该页面。在谷歌搜索了一下之后,我发现了一篇2年前的帖子,上面说在Useragent中,我们必须包含字符串“Instagram”才能让它工作

我通过伪造useragent来实现这一点,结果如下:

{"status":"fail","message":"Your version of Instagram is out of date. Please upgrade your app in the Play Store to log in to Instagram."}
现在,我猜我们还需要添加其他内容或其他标题,因此我正在寻找一种方法来获取由他们的Android或IOS应用程序发送到instagram的请求

接下来我下载了Bluestack,并用它在我的电脑上安装和运行instagram。我能够成功地安装并登录它,但是由于请求被发送到https://服务器,因此我无法使用Charles登录它

我还试图通过Wireshark获取它,但不幸的是,我在使用它方面没有太多经验,因此不知道它的用途

那么有谁能帮我在不使用oAuth的情况下用C#登录instagram,因为我只有用户名和密码。

我可能会为请求的结尾部分编写代码,但我无法捕获发送到instagram的标题。


此外,如果有任何类似Charles/Wireshark的东西可以捕获Android的网络流量,也请务必让我知道。

如果您可以通过USB告诉您的设备使用PC的互联网连接,您应该能够使用Fiddler捕获请求并查看请求头。您的请求似乎越来越接近,但可能只需要在您的请求中的某个地方输入一个版本号。

您始终可以只使用login\password登录


能够嗅探流量对您没有帮助,因为他们现在会签署所有邮件,以阻止您试图实现的目标。

您可以在此处找到Instaguser library

Instaguser允许您在不使用OAuth的情况下登录instagram。
目前,您可以更改用户信息:用户名、传记等。。。等等。

是的,您可以使用
Webview
给你

 mWebView.setWebViewClient(new WebViewClient() {


            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                UrlQuerySanitizer.ValueSanitizer sanitizer = UrlQuerySanitizer.getAllButNulLegal();
// remember to decide if you want the first or last parameter with the same name
// If you want the first call setPreferFirstRepeatedParameter(true);
                sanitizer.sanitize(url);
                String value = sanitizer.sanitize("username"); // get your value
                if(MyBridge.getUsername()!=null)username = MyBridge.getUsername();
               return  true;

            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
//                showLoading();

                CookieManager.getInstance().removeAllCookies(null);
//                CookieManager.getInstance().flush();
                progressBar.setVisibility(View.VISIBLE);

            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);

                progressBar.setVisibility(View.GONE);

                if (url.equalsIgnoreCase(mURL)) {
                    view.addJavascriptInterface(new MyBridge(InstagramOfficalLoginActivity.this), "bridge");
                    String javascript = "javascript: document.getElementsByClassName(\"_0mzm- sqdOP  L3NKy       \")[0].onclick = function() {\n" +
                            "        var username = document.getElementsByName(\"username\").value;\n" +
                            "        var password = document.getElementsByName(\"password\").value;\n" +
                            "        bridge.saveData(username, password);\n" +
                            "    };";
                    view.loadUrl(javascript);
                }


                    if (isSessionid ) {
//                        username = MyBridge.getUsername();
                        //сохранение данных пользователя
                        Logins logins = new Logins();
                        logins.setUserId(InstaUtils.getUserId());
                        logins.setUserName("");
                        logins.setProfilePic("");
                        logins.setSession_id(InstaUtils.getSessionid());
                        logins.setCooki(InstaUtils.getCookies());
                        logins.setCsrf(InstaUtils.getCsrf());

                        long id = DataObjectRepositry.dataObjectRepositry.addNewUser(logins);


                        PreferencesManager.savePref(GlobalConstant.USERNAME,username);
                        PreferencesManager.savePref(GlobalConstant.USER_ID, InstaUtils.getUserId());
                        PreferencesManager.savePref(GlobalConstant.TOKEN, InstaUtils.getSessionid());
                        PreferencesManager.savePref(GlobalConstant.PROFILE_PIC,"");




                        Intent intent = new Intent(InstagramOfficalLoginActivity.this, MainActivity.class);

                        PreferencesManager.savePref("isLogin",true);
                        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
                        intent.putExtra("user", InstaUtils.getUserId());
                        intent.putExtra("database_id",String.valueOf(id));

                        mWebView.destroy();
                        mWebView = null;
                        startActivity(intent);

                    }

            }

            @Override
            public void onLoadResource(WebView view, String url) {
                super.onLoadResource(view, url);
                progressBar.setVisibility(View.GONE);
                cookies = CookieManager.getInstance().getCookie(url);

                try {
                    String session_id = getCookie(url, "sessionid");
                    String csrftoken = getCookie(url, "csrftoken");
                    String userid = getCookie(url, "ds_user_id");
                    if (session_id != null && csrftoken != null && userid != null) {
                        isSessionid = true;
                        InstaUtils.setSessionId(session_id);
                        InstaUtils.setUserId(userid);
                        InstaUtils.setCookies(cookies);
                        InstaUtils.setCsrf(csrftoken, cookies);

                    }
                }catch (Exception e){
                    e.printStackTrace();
                }


            }

            @SuppressWarnings("deprecation")
            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                ToastUtils.ErrorToast(InstagramOfficalLoginActivity.this, description);
            }

            @TargetApi(android.os.Build.VERSION_CODES.M)
            @Override
            public void onReceivedError(WebView view, WebResourceRequest req, WebResourceError rerr) {
                // Redirect to deprecated method, so you can use it in all SDK versions
                onReceivedError(view, rerr.getErrorCode(), rerr.getDescription().toString(), req.getUrl().toString());
            }


        });

        mWebView.loadUrl(mURL);
您还可以从我的github配置文件中下载完整的工作代码


我希望它能工作,谢谢:)

我已经试过使用fiddler了。但它是一个代理,只捕获发送到指定端口的请求。如果将代理设置为nothing,则fiddler将无法捕获该请求。我正在寻找类似Wireshark的东西,它可以在网络级别捕获,但是,唉,我不知道它的用途:(+它的ssl在Wireshark中也加密了。)你想分享一下为什么这个应用程序(你给git repo的url)被从playstore中删除吗